题解 | #筛选法求素数#

筛选法求素数

https://www.nowcoder.com/practice/06c3dcc303654ef4926654023eca1e5a

#include<stdio.h>
//筛选法 求 n 以内的素数
#define NUM 1000
int main()
{
	int n = 0;
	//多组输入
	while (~scanf("%d", &n))//~EOF = 0//为假
	{
		int arr[NUM] = { 0 };
		//将 2 ~ n 之间的正整数 存入数组中
		for (int i = 2; i <= n; i++)
		{
			arr[i] = i;//对应 存储
		}

		//筛选法
		for (int i = 2; i <= n; i++)
		{
			for (int j = 2; j <= n; j++)//不断遍历数组中的元素
			{
				if (i == j)//碰到 自身除以自身 就跳过(素数 是只能被 1 和 它自身 整除的数)
				{
					continue;
				}
				if (arr[j] % i == 0)
				{
					arr[j] = 0;//将 不是 素数的数 赋值为 0
				}
			}
		}
		//输出
		int cnt = 0;//计数器  //统计 数组中被 清零的元素的个数,即 不是素数的数
		for (int i = 2; i <= n; i++)
		{
			if (arr[i] == 0)
			{
				cnt++;
				continue;
			}
			if (i == 2)
			{
				printf("%d ", 2);
			}
			else
			{
				printf("%d ", arr[i]);
			}
		}
		printf("\n%d\n", cnt);
		
	}

	return 0;
}

全部评论

相关推荐

06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在午休:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务