1. 程式人生 > >PTA-素數對猜想

PTA-素數對猜想

這是PTA上的中國大學MOOC資料結構-起步能力測試題,如下:

自測-2 素數對猜想(20 分)

讓我們定義dn為:dn=pn+1pn,其中pi是第i個素數。顯然有d1=1,且對於n>1dn是偶數。“素數對猜想”認為“存在無窮多對相鄰且差為2的素數”。

現給定任意正整數N(<105),請計算不超過N的滿足猜想的素數對的個數。

輸入格式:

輸入在一行給出正整數N

輸出格式:

在一行中輸出不超過N的滿足猜想的素數對的個數。

輸入樣例:

20

輸出樣例:

4

#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;
}
要說的是,在判斷素數時,若for(i=2;i<n/2;i+=2),則會有一個示例執行超時,判斷素數的終止條件還是得用sqrt(n),效率更高。