找素数(两种比较高效的方法)

本文介绍了两种高效找素数的方法:埃式筛法和线性筛法。埃式筛法通过标记偶数和奇数来排除合数,而线性筛法则比埃式筛法更快。示例展示了如何使用这两种方法找出101以内的所有素数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数。

埃式筛法:

所有的偶数(除2以外)都为合数,所有的奇数不一定为奇数
①先把所有的除2以外的偶数都标记为0,所有的奇数都标记为1;
0,1标记为0,2标记为1;
②用for循环找出奇数中的非素数
③奇数的倍数都不为素数
例:找出101以内所有的素数

const int maxn=1e5+10;
int prime[maxn]; // 质数为0 ,非质数为1
void Find_prime()
{
   
   
    int t=sqrt(maxn);
    prime[0]=prime[1]=1;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值