1. 程式人生 > >7-3 素數對猜想(20 分)

7-3 素數對猜想(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

思路:要計算兩兩之間差值為2的素數。
正確程式碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h> int sushu(int n) { int i; for(i=2;i<=sqrt(n);i++) { if(n%i==0) return 0; } return 1; } int main() { int n,i,cnt; cnt = 0; scanf("%d",&n); int x = 2; int y = 3; for(i=4;i<=n;i++) { if(sushu(i)) { x = y; y = i; if
(y-x==2) cnt++; } } printf("%d\n",cnt); return 0; }

錯誤程式碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int sushu(int n)
{
    int i;
    for(i=2;i<=sqrt(n);i++)
    {
        if(n%i==0)
            return
0; } return 1; } int main() { int n,i,cnt; cnt = 0; scanf("%d",&n); for(i=2;i<=n;i++) { if(sushu(i)) cnt++; } printf("%d\n",cnt/2); return 0; }