如何解决检查整数是否为质数,如果不是则返回最小因数
我需要检查给定的整数是否是质数,如果是,则返回True。如果不是,我需要找到大于1的最小因子。我是完全陌生的,即使代码编译失败了几个测试用例。
MultiWorkerMirroredStrategy
解决方法
素数是一个只能除以一个数和本身的数。因此,如果我们测试x
,则应该测试每个数字y
,使得1 < y < x
。一个很好的测试方法是使用for循环。这是一个示例:
def isPrime(n):
for i in range(2,n):
if n % i == 0:
return False # because that means that something divides into n perfectly
return True
这有一些问题:
-
isPrime(1)
返回True
- 任何负数将返回
True
- 随着数字变大,程序会变得相当慢。例如,完成
isPrime(1000003)
花费0.145秒,但是素数需要更长的处理时间,因为一旦找到一个因数,整个函数就会停止并返回,而要找到素数,它必须运行直到n
为止的每个迭代。
我暂时将那些问题留给您。同时,我们需要一种返回最小因子的方法。实际上,这很容易做到:
def isPrime(n):
for i in range(2,n):
if n % i == 0:
return i # i at this iteration is equal to the smallest factor
return True
因此,isPrime(20)
返回2
,而isPrime(19)
返回True
。希望这能满足您的需求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。