现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
按照题目要求dn=pn+1−pn找出所有相邻素数相差为2的可能性,先对100001内的所有素数进行打表存入一个数组,该数组数组下标i表示第i个素数,最后一层for循环找出所有在N的范围内的相邻素数差为2的可能性
#include <bits/stdc++.h>
using namespace std;
int issushu(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(issushu(i))
{
str[k] = i;
k++;
}
}
int N,count = 0;
cin >> N;
for(int i = 1 ; i > 0 ; i++)
{
if(str[i]>N) //超出范围N直接跳出循环
break;
if(str[i]-str[i-1] == 2) //相邻素数相差为2的可能性
count++;
}
cout << count ; //输出最后结果
return 0;
}
提交截图: