C++编程用筛选法求100以内的素数

求100以内的素数是许多编程初学者的必会的技能,具体方法有很多,这里我们用筛选法来求。

筛选法的意思就是,将非素数全部筛选出来,将其赋值为0,那么剩下的就全部都是素数了,具体步骤如下:

  1. 第一步,创建判断函数,判断输入的数是否为素数,不是则返回0,是则返回1;
  2. 第二步,创建输出函数,先创建容量为101的数组并将其全部赋值为0,这样可以把1-100按顺序显示,便于理解。我们都知道1是特殊的素数,所以我们直接从2开始循环,直到99,把每个元素赋值为自己的序号值,即arr[2]=2,arr[3]=3,...,arr[99]=99以此类推。再利用判断函数对每一个数进行判断,是否为素数,若判定为非素数,则将其重新赋值为0,经过循环后,剩下来非0的所有数就都是非素数了。最后再将值不为0的所有元素全部输出,即为100以内的全部素数;
  3. 最后在主函数中输出。

应该注意的是,在判断是否为素数时,我最开始写的是k<sqrt(x),后来发现这样漏掉了一些平方数4,9,25和49,所以我又对函数进行了更改,改成了k<=sqrt(x),结果才正确输出了。

完整代码如下:

#include<iostream>
#include<math.h>
using namespace std;
int is_prime(int x) // 判断是否为素数
{
	for (int k = 2; k <= sqrt(x); k++)
	{
		if (x%k == 0)
			return 0; //不是素数
	}
	return 1; //是素数
}

void get_prime() //输出100以内素数
{
	int arr[101] = { 0 };
	for (int i = 2; i < 100; i++)
	{
		arr[i] = i; //从2到99,令每一个元素等于自己的序号
	}
	for (int j = 2; j < 100; j++)
	{
		if (is_prime(arr[j]) == 0)
			arr[j] = 0; //不是素数则将其标为0
	}
	for (int m = 2; m < 100; m++)
	{
		if (arr[m] != 0)
			cout << arr[m] <<" ";
	}
}

int main()
{
	get_prime();
	system("pause");
	return 0;
}

 

 

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ricardo_yanwu

发博客也就图一乐学到知识最重要

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值