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;
}