素数筛

本文详细介绍了素数筛算法的基本概念,并通过实例演示了如何优化算法以提高效率。主要内容包括:首先定义了素数的概念,即质数及其性质;接着通过去除偶数和特殊奇数(如9)来简化算法;最后引入了使用平方根优化的方法来减少不必要的计算,从而提高了算法的执行速度。
偶遇素数筛 - - 决定必须秒它 - -
首先我们必须明确几点:
素数就是质数 , 而且0,1 都不是素数.

开始晒吧- -...
Firstly,偶数一定不是素数故此先把偶数晒去
for( i = 3 ; i <= n; i ++ ){
    prime[ i ] = i % 2 == 0 ? 0:1;
}



第一个奇数不是素数的为 9 ,而9正好是3^2 故此我们从3开始遍历.因为 奇数 + 奇数 = 偶数 而偶数必然是素数,故此我们的 j += 奇数*2.因为奇数 + 偶数 = 奇数. 为啥 t 要 sqrt 一下呢,是因为 81 = 3 * 27  和 81 = 27 * 3是一样的,既然3的27倍依然被削去了,所以27的3倍就没必要再一次削去,节省点时间复杂度么!
int t = ( int ) sqrt( (double) n ); 
for( i = 3 ; i <= t ; i++ ){
    if( prime[ i ] ){
        for( j = i * i ; j < n ; j += i * 2)
            prime[ j ] = 0; 
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值