1007 素数对猜想
让我们定义dn 为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(N<105),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
思路:直接打出一张100000以内的素数表a[ ],初始默认全为素数并标记0,后续判断不是素数时标记1。最后只需注意输出条件,因为a[i]的值用来作标记,而i本身才代表某个整数,需要判断是否a[i]和a[i+2]都为0,循环条件是i+2<=n(即下一个素数是否已超出范围)
#include <stdio.h>
int main() {
int n, cnt = 0, a[100001] = { 0 };
scanf("%d", &n);
for (int i = 2; i * i < 100000; i++)
for (int j = 2; j * i < 100000; j++) a[j * i] = 1;
for (int i = 3; i + 2 <= n; i++) if (!a[i + 2] && !a[i]) cnt++; //第一对符合的素数对为3,5,所以从3开始
printf("%d", cnt);
return 0;
}