PTA-素數對猜想
阿新 • • 發佈:2018-12-30
這是PTA上的中國大學MOOC資料結構-起步能力測試題,如下:
自測-2 素數對猜想(20 分)
讓我們定義dn為:dn=pn+1−pn,其中pi是第i個素數。顯然有d1=1,且對於n>1有dn是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。
現給定任意正整數N
(<105),請計算不超過N
的滿足猜想的素數對的個數。
輸入格式:
輸入在一行給出正整數N
。
輸出格式:
在一行中輸出不超過N
的滿足猜想的素數對的個數。
輸入樣例:
20
輸出樣例:
4
要說的是,在判斷素數時,若for(i=2;i<n/2;i+=2),則會有一個示例執行超時,判斷素數的終止條件還是得用sqrt(n),效率更高。#include<stdio.h> #include<math.h> int IsPrime(int n)//判斷素數的函式 { int i; for(i=2;i<=sqrt(n);i++) { if(n%i==0) return 0; } return 1; } int main() { int N; scanf("%d",&N); int i,count=0; for(i=3;i<=N-2;i+=2) { if(IsPrime(i)&&IsPrime(i+2)) count++; } printf("%d\n",count); return 0; }