[PTA]自测-2 素数对猜想
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]自测-2 素数对猜想相关的知识,希望对你有一定的参考价值。
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
- 提交结果:
- 源码:
#include<stdio.h>
#include<math.h>
int isPrime(int n); // 判断num是否是素数,是则返回1,否则返回0
int main(void)
{
int N;
int currentPrime, nextPrime; // 当前素数,下一个相邻的素数
int count = 0; // 从3~N之间的素数对个数
scanf("%d", &N);
for (int i = 3; i <= N; i++)
{
if (isPrime(i))
{
// 找到一个素数,需要查找它的下一个相邻素数
currentPrime = i;
while (i <= N)
{
i++; // 从相邻的下一个开始判断
if (isPrime(i))
{
// 找到下一个相邻的素数
nextPrime = i;
// 满足素数对条件
if (nextPrime - currentPrime == 2)
{
count++;
}
// i--,避免for循环i++导致当前素数不正确
i--;
break;
}
}
}
}
printf("%d\\n", count);
return 0;
}
// 判断num是否是素数,是则返回1,否则返回0
int isPrime(int n)
{
if (n < 2)
{
return 0;
}
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}
以上是关于[PTA]自测-2 素数对猜想的主要内容,如果未能解决你的问题,请参考以下文章