python中怎么优雅地判断一个数字是不是素数?

大神们都是怎样校验是否素数的呢?有没有现成的模块可以调用?

阅读 3k
3 个回答

优雅是没办法优雅了,只能尽量提高性能

import math

def is_prime(number):
    if number > 1:
        if number == 2:
            return True
        if number % 2 == 0:
            return False
        for i in range(3, int(math.sqrt(number) + 1), 2):
            if number % i == 0:
                return False
        return True
    return False

https://www.zhihu.com/questio...
看你的实际需求了,你要校验多大的素数
要是任意大数判断是不是素数,工程实践中一版都是用快速校验(不能保证一定是素数,但是速度很快,会多次快速校验来保证不是素数的概率很小,这种判断出来的素数可以在某些实践中使用,但不能在数学上直接认为是素数)
某些特定的大数有特定的方法判断是否是素数,但这种方法只能针对特定的数,不通用
如果数不大可以硬算,速度会相对慢但百分百准确

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题