一、题目概述
让我们定义dn为:dn=pn+1−p n,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
二、输入格式
输入在一行给出正整数N。
三、输出格式
在一行中输出不超过N的满足猜想的素数对的个数。
四、解题思路
依题意dn=pn+1−pn找出所有相邻素数相差为2的可能性,对100001内的所有素数进行循环并存入数组,再用for循环找出所有在N的范围内的相邻素数差为2的可能性count++
五、代码示例
#include<stdio.h>
#include<math.h>
int sushu(int n) //判断素数
{
int i;
int k = (int)sqrt(n);
for(i =2; i <= k; i++)
{
if(n%i == 0)
{
break;
}
}
if(i>k)
return 1;
else
return 0;
}
int main()
{
int str[100001];
int k=0;
for(int i=0;i < 100001 ; i++)//找出100001以内的素数并存入数组
{
if(sushu(i))
{
str[k] = i;
k++;
}
}
int N,count=0;
if(scanf("%d",&N)){};
for(int i = 1; i > 0; i++)
{
if(str[i]>N) //超出N直接跳出
break;
if(str[i]-str[i-1] == 2) //相邻素数相差为2
count++;
}
printf("%d\n",count);
return 0;
}