/* 让我们定义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; }
时间: 2024-12-19 02:26:07