1007. 素数对猜想 (20)

    xiaoxiao2021-04-18  70

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

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

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

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

    输入样例: 20 输出样例: 4

    #include <stdio.h>

    int judge(int a){     if(a % 2 == 0 && a != 2)return 0;      for(int i = 3; i * i <= a; i++)if(a % i == 0)return 0;         return a != 1; } int main(void){   int num=0;   int a[50001]={0};   scanf("%d",&num);   int cnt=1;   a[0]=2;   for(int i=3;i<=num;i+=2)if(judge(i)==1)a[cnt++]=i;   int sum=0;   for(int j=0;j<=(cnt-2);j++){       if((a[j+1]-a[j])==2)sum++;   }   printf("%d",sum);   return 0;

    }

    #include <stdio.h> #include <stdlib.h> #include <malloc.h> int prime(int a[],int n)   {       int i,j,k,x,num,*b;       n++;       n/=2;       b=(int *)malloc(sizeof(int)*(n+1)*2);       a[0]=2;       a[1]=3;       num=2;       for (i=1;i<=2*n;i++)           b[i]=0;       for (i=3;i<=n;i+=3)           for (j=0;j<2;j++)           {               x=2*(i+j)-1;               while (b[x]==0)               {                   a[num++]=x;                   for (k=x;k<=2*n;k+=x)                       b[k]=1;               }           }       return num;   }   int main(void){   int num=0;   int a[50001]={0};   scanf("%d",&num);   a[0]=2;   int cnt=prime(a,num);   int sum=0;   for(int j=0;j<=(cnt-2);j++){       if((a[j+1]-a[j])==2)sum++;   }   printf("%d",sum);   return 0; }

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <stdio.h> int isprime(int n) { for (int i=2;i<=sqrt(n);i++) { if (n%i==0) return 0; } return 1; } int main(void){ int num=0; int a[50001]={0}; scanf("%d",&num); int cnt=1; a[0]=2; for(int i=3;i<=num;i+=2)if(isprime(i)==1)a[cnt++]=i; int sum=0; for(int j=0;j<=(cnt-2);j++){ if((a[j+1]-a[j])==2)sum++; } printf("%d",sum); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-675608.html

    最新回复(0)