7-1 素数对猜想(C语言)

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;
}
posted @ 2024-08-31 16:39  yesno233233  阅读(99)  评论(0)    收藏  举报