给定一个范围,快速查找范围[a,b]的素数

素数的定义:如果x是大于1的自然数,并且只被1和它自身整除,那么x就是素数。

试除法(Naive Approach)

试除法是最基本的素数检测方法,它通过遍历从2到n的所有整数来检查一个数n是否为素数。如果n能被2到n-1之间的任何整数整除,那么n就不是素数。这种方法的效率较低,特别是对于大数,因为它需要进行大量的除法运算。

def is_prime_naive(n):
    if n <= 1:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

优化试除法(Square Root Limit)

优化试除法改进了试除法,它基于这样一个事实:如果一个数n不是素数,它必定有一个因子不大于它的平方根。因此,我们只需要检查到n的平方根即可。这种方法显著减少了检查的因数数量,从而提高了效率。

def is_prime_optimized(n):
    if n <= 1:
        return False
    if n <= 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False
    i = 5
    while i * i <= n:
        if n % i == 0 or n % (i + 2) == 0:
            return False
        i += 6
    return True

在这个优化版本中,我们首先检查n是否能被2或3整除,然后从5开始,每次增加6(即检查6k ± 1形式的数),因为除了2和3之外的所有素数都是6k ± 1的形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值