1. 程式人生 > >PAT 1007素數對猜想

PAT 1007素數對猜想

1007 素數對猜想 (20)(20 分)

讓我們定義 dn =pn+1pn,其中pn 是第i個素數。顯然有 d1=1 且對於n>1有dn是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。
現給定任意正整數N(N<105),請計算不超過N的滿足猜想的素數對的個數。
輸入格式:
每個測試輸入包含1個測試用例,給出正整數N。
輸出格式:
每個測試用例的輸出佔一行,不超過N的滿足猜想的素數對的個數。
輸入樣例:

20
1

輸出樣例:

4
1

這裡寫圖片描述
我看到的題目是這樣的,感覺(#°Д°)。我去百度了素數對猜想才明白題目中公式是什麼。用latex重新把公式重新編輯了一遍。



解析

這題我的思路是:輸入的數num,把 2~num 的素數過一遍。每算出一個素數,便和上一個素數作差。一個迴圈便可得到多少素數對。
完整程式碼:

#include<stdio.h>
#include<math.h>
int judge_prime(int num)
{
  int i = 0;
  for(i=2; i<=sqrt(num) ;i++){
    if(num%i ==0)
      return 0;
  }
  return 1;
}
int main()
{
  int num = 0;
  scanf("%d",&num);
  int
i = 0; int prime_part = 0; int prime=2; for(i=3; i<=num ;i++){ if(judge_prime(i) == 1){ if(i-prime == 2) prime_part++; prime = i; } } printf("%d",prime_part); return 0; }