首页 > 代码库 > PAT 1007 素数对猜想 C语言

PAT 1007 素数对猜想 C语言

让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。

输入格式:每个测试输入包含1个测试用例,给出正整数N。

输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4


 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4 #define MAXN 100000
 5 int a[MAXN];
 6 int isPrime(int num);
 7 int main()
 8 {
 9     int num;
10     scanf("%d",&num);
11     memset(a,0,MAXN);
12 
13     int i,cnt1 = 2,cnt2 = 0;
14     a[2] = 2;
15     for(i = 3; i <= num; i++){
16         if(isPrime(i)){
17             cnt1++;
18             a[cnt1] = i;
19             if((a[cnt1]-a[cnt1-1])== 2){
20                 cnt2++21             }
22         }
23     }
24     printf("%d",cnt2);
25     return 0;
26 }
27 
28 //判断是否为素数
29 int isPrime(int num){
30     int flag = 1;
31     int temp = sqrt(num);
32     int i;
33     for(i = 2; i <= temp; i++){
34         if(num % i == 0) flag = 0;
35     }
36     return flag;
37 }