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;
}
标签:猜想,标记,int,C语言,素数,num
From: https://www.cnblogs.com/yesno233233/p/18390453