PAT (Basic Level) Practice (中文)1007 素数对猜想 (20分)(C语言版)

    科技2022-08-25  103

    1007 素数对猜想 (20分)

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

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

    输入格式:

    输入在一行给出正整数N。

    输出格式:

    在一行中输出不超过N的满足猜想的素数对的个数。

    输入样例:

    20

    输出样例:

    4

    代码:

    #include<stdio.h> #include<math.h> /**************************************************** 由输入的样例其中素数为 2 3 5 7 11 13 17 19 显然小于4时,满足的个数为0,且素数可以从3算起,算过的不再累计 用count 来算符合要求的数 可用一个数a来存前一个素数的数,当后者算出相差为2时, count++, 再每一次算出新的素数时,让a等于后者 ****************************************************/ int isPrime(int n) { int i; for (i = 2; i < sqrt(n) ; i++) if (n % i == 0) break; if(i <= sqrt(n)) return 0; return 1; } int main(void) { //从3算起 int a = 3, count = 0; int n; int i = 5; scanf("%d", &n); if(n >= 5) { while(i <= n) { //i是素数 if(isPrime(i)) { if(i - a == 2) count++; a = i; } i++; } } printf("%d\n", count); return 0; }

     

     

    Processed: 0.008, SQL: 9