1007 素数对猜想 (20 分)
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<100000),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
问题解析:素数 2,3,5,7,11,13...,第一组2,3 d1=1,第二组5,7 d2=2,找出集合内有多少对相邻且差为2的素数即可。
#include <stdio.h> #include <stdlib.h> #include <math.h> int prime(int num); int main(void) { int num,i,j=0,a[10000],count=0; scanf("%d",&num); for (i=2;i<=num;i++) //建立素数列表 if (prime(i)) { a[j]=i; j++; } for (i=0;i<j-1;i++) if (a[i+1]-a[i]==2) //满足相邻素数差为2 count++; printf("%d",count); system("pause"); return 0; } int prime(int num) //找出素数 { int n=sqrt(num),i,ret=1; for (i=2;i<=n;i++) { if (num%i==0) { ret=0; break; } } return ret; }

浙公网安备 33010602011771号