让我们定义 d~n~ 为:d~n~ = p~n+1~ - p~n~,其中 p~i~ 是第i个素数。显然有 d~1~=1 且对于n>1有 d~n~ 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 10^5^),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
代码1:
#include<stdio.h> #include<stdlib.h> //判断素数的子函数 int issushu(int n) { int i,falg=1; for(i=2; i<=n/2; ++i) { // 符合该条件不是素数 if(n%i==0) { falg=0; break; } } if (falg==0) return 0; else return 1; } int main() { int n,count=0; scanf("%d",&n); while(n!=3) { if((issushu(n))&&(issushu(n-2))) { count++; } n--; } printf("%d",count); system("pause"); return 0; }
超时报错
代码2:
修改了判断素数的子函数和主函数一些内容
#include<stdio.h> #include <math.h> #include<stdlib.h> //判断素数的子函数 int issushu(int n) { int x,y; x=(int)sqrt(n); for(y=2;y<=x;y++){ if(n%y==0){ return 0; } } if(y>x){ return 1; } } int main() { int n,count=0; scanf("%d",&n); while(n>=5) { if((issushu(n))&&(issushu(n-2))) { count++; } n--; } printf("%d",count); system("pause"); return 0; }