1. 程式人生 > >自測-2 素數對猜想 (20分)

自測-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>
#define MAX 100009

void Find1(int n,int &s,int prime[]);
void Find2(int s,int prime[]); 
 
int main()
{
	int N;
	while(scanf("%d",&N)!=EOF)
	{
		int Prime[N+1];
		int S=0;
		Find1(N,S,Prime);
		Find2(S,Prime); 
	}
	return 0;
}

void Find1(int n,int &s,int prime[])
{
	int i,j,k;
	for(i=2;i<=n;i++)
	{
		k=(int)sqrt(i);
		for(j=2;j<=k;j++)
		{
			if(i%j == 0)
			{
				break;
			}
		}
		if(j>k)
		{
		    prime[s]=i;
			s++;	
		}
	}
}

void Find2(int s,int prime[])
{
	int i;
	int n=0;
	for(i=0;i<s-1;i++)
	{
		if(prime[i+1]-prime[i] == 2)
		{
			n++;
		}
	}
	printf("%d\n",n); 
}