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

PAT乙級1007 素數對猜想

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

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

輸入格式:每個測試輸入包含1個測試用例,給出正整數N。

輸出格式:每個測試用例的輸出佔一行,不超過N的滿足猜想的素數對的個數。

輸入樣例:
20
輸出樣例:

4

#include<stdio.h>
#include<string.h>
#define size 100010
int isprime[size];
void prime();
int main(void)
{
	prime();
	int num;
	scanf("%d", &num);
	//printf("num=%d\n", num);
	int count = 0;
	for (int i = 2; i<=num-2; i++)
	{
		if (isprime[i] && isprime[i + 2])
		{
			//printf("這對素數對是%d %d\n", i, i + 2);
			count++;
		}

	}
	printf("%d\n", count);
	return 0;
}

void prime()
{
	for (int i = 0; i < size; i++)
	{
		isprime[i] = 1;
	}
	isprime[0] = 0;
	isprime[1] = 0;
	for (int x = 2; x < size; x++)
	{
		for (int n = 2; x*n < size; n++)
		{
			isprime[x*n] = 0;
		}
	}
}