7-1 素數對猜想(C語言)

yesno233233發表於2024-08-31

7-1 素數對猜想

題目

參考程式碼

#include <stdio.h>
int main()
{
	// 一、用埃拉託斯特尼篩法,找出所有的素數
	int num[100002];
	int N;
	scanf("%d", &N);
	for (int i = 2; i < N + 2; i++) // 賦初值為1,表示均為素數
		num[i] = 1;

	// 把未標記的數的的倍數,全部標記為非素數0
	int k = 2;
	while (k <= N)
	{
		if (num[k] == 1)
		{
			int p = 2; // 乘以的倍數:減少複雜度,防止超時
			for (int i = k * 2; i <= N; i += k)
				num[i] = 0;
		}
		k++;
	}

	// 二、把找出來的素數,組成一個新陣列priNum
	int priNum[100002];
	int t = 0;
	for (int i = 2; i <= N; i++)
	{
		if (num[i] == 1)
		{
			priNum[t] = i;
			t++;
		}
	}

	// // 輸出所有素數,檢查
	// for (int i = 0; i < t; i++)
	// {
	// 	printf("%d ", priNum[i]);
	// }

	// 三、逐個相減判斷是否偶數,用sum計數, 輸出sum
	int sum = 0;
	for (int i = 0; i < t - 1; i++)
	{
		if ((priNum[i + 1] - priNum[i]) == 2)
			sum++;
	}
	printf("%d", sum);
	return 0;
}

相關文章