PAT(Basic Level) Practice——1007 素數對猜想
阿新 • • 發佈:2018-11-24
原題目:
讓我們定義dn為:dn=pn+1−pn,其中pi是第i個素數。顯然有d1=1,且對於n>1有dn是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。
現給定任意正整數N
(<105),請計算不超過N
的滿足猜想的素數對的個數。
輸入格式:
輸入在一行給出正整數N
。
輸出格式:
在一行中輸出不超過N
的滿足猜想的素數對的個數。
輸入樣例:
20
輸出樣例:
4
分析:
1.根據題目中所給素數對的猜想,即在題目要求的範圍內相差為2的相鄰素數有多少個。因此我的方法是從2開始向正整數N判斷,若當前值為素數,且加2後滿足小於等於N且為素數,則執行操作+1,最後列印結果。
程式碼:
C語言版:
#include <stdio.h> #include <stdlib.h> //函式用於判斷是否為素數, int isPrime(int n) { int t=1,i=2; for(i=2;i<=sqrt(n);i++) { if(n%i==0) { return 0; } } return 1; } int main() { //num 為讀入的數,flag為符合題目的個數,tag_1 tag_2分別是兩次判斷的標記 int num,flag=0,tag_1=0,tag_2=0,i=0; scanf("%d",&num); for(i=2;i<num;i++) { tag_1=isPrime(i);//第一次判斷 if(tag_1==1)//滿足條件則判斷+2後的值 { if(i+2<=num) { tag_2=isPrime(i+2);//加2的值的判斷 if(tag_2==1)//滿足條件 { flag++;//計數加一 } } else { break; } } } printf("%d\n",flag);//列印結果 return 0; }