/*
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
*/
#include<stdio.h>
#include<stdbool.h>
#include<math.h>
//判断给定的数字是否为素数
bool is_prime( int n );
int main(void){
// int n = 100000;
int n = 0;
int i = 3;
int count = 0;
scanf("%d",&n);
n -= 2;//因需要判断的是i及i+2,所以循环变量的值最大为n-2
while( i <= n ){
if( is_prime(i) && is_prime(i+2)){
count++;
i += 2;
continue;
}
i++;
}
printf("%d\n",count);
//
// printf("hello\n");
return 0;
}
bool is_prime( int n ){
bool flag = false;
int i = 2;
int j = (int)sqrt(n);
for( i = 2; i <= j; i++ ){
if( 0 == n % i ){
break;
}
}
if( i > j ){
flag = true;
}
return flag;
}
转载于:https://my.oschina.net/iamhere/blog/514469