标题7-45 素数对猜想 (20分)
让我们定义dn为:dn =p(n+1) −pn ,其中pi 是第i个素数。显然有d1=1,且对于n>1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<10的5次方),请计算不超过N的满足猜想的素数对的个数。
标题输入格式:
输入在一行给出正整数N。
标题输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
标题输入样例:
20
标题输出样例:
4
# include<stdio.h>
# include<math.h>
int isprime(int n);
int main(){
int n;
scanf("%d",&n);
int i=0;
int j,k;
for(j=1;j<=n;j++){
if(isprime(j)){
for(k=j+1;k<=n;k++){
if(isprime(k)){
if(k-j==2){
i++;
}
break;
}
}
j=k-1;/*循环结束后j还要加一,所以要先减
1*/
}
}
printf("%d",i);
}
int isprime(int n){
int tmp;
if(n<5){
if(n==2||n==3){
return 1;
}else{
return 0;
}
}
if(n%6!=1&&n%6!=5){
return 0;
}
tmp=sqrt(n);
for(int i=5;i<=tmp;i+=6){
if(n%i==0||n%(i+2)==0){
return 0;
}
}
return 1;
}//这个素数判断方法是从另一个大佬那学的