怎么用Python找出素数?

在编程问题中,我们或许都碰到过这个问题,下面针对于这个问题来阐述一下我

的方法:首先,定义了一个名为is_prime的函数,它接受一个数字n作为参数。

再通过一些简单的条件判断排除了小于等于 1 的数字和小于等于 3 的数字(因

为 1 不是素数,2 和 3 是素数)。然后,检查数字是否可以被 2 或 3 整除,

如果可以,则返回False表示不是素数。接下来,使用一个循环从 5 开始,每次

增加 6,直到i的平方大于n(因为我们是以6为一个循环,我们首先排除了6

的几个公因数,这样在一个循环数的区域里剩下的只有我们需要的数字,例如:

i=5,而i*i就等于25,在1-25的区间里,首先排除123,紧接着再排除2 3 5的

倍数,这样下来只剩下5 7 11 13 17 19 23这几个数字,从而进入while循环里,

再紧接着排除5和7的倍数,然后再排除(5+6X)的倍数,X是正整数,这样就

把所有的有因数的数字排除,从而只剩下素数)。在循环中,检查数字是否可以

被i或i+2整除,如果可以,则返回False表示不是素数。如果循环结束后都没有

找到可以整除n的数,则返回True表示n是素数。

代码如下:

def is_prime(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

运行结果如下:

最后很感谢您的观看,希望我的过程对您会有帮助!

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值