[英]Python - Prime numbers Code
我正在尝试查找数字705561475143的素数。
在我的代码中,函数primeFactor()
搜索某个整数中的所有因子,然后将它们插入函数Prime()
,后者将数字更改为0或完全不更改。 如果数字未更改为0,则应将其为质数添加到列表中。
import math
def Prime(n):
isPrime = False
r = range(2, int(math.sqrt(n)+5))
a = 1
for b in r:
if r[a] >= int(math.sqrt(n)+2):
break
elif n % r[a] != 0:
a += 1
elif n % r[a] == 0 & n != r[a] & n != 1:
n = 0
break
def primeFactor(m):
l = []
for x in range(1, m+1):
if m % x == 0:
if Prime(m) != 0:
l.append(x)
print(l)
但是,当我输入
> primeFactor(36)
我懂了
> [1,2,3,4,6,9,12,18,36]
代替
> [2,3]
当我输入
> primeFactor(705561475143)
该代码无法给我答案。
首先,为什么要对x in range()
的x in range()
使用m+1
? 请注意,您可能只想使用range(2, m/2, 1)
-看看能否找出原因。
其次,
if m % x == 0:
if Prime(m) != 0:
l.append(x)
如果m
可被x
整除,则它不能为素数,因此调用Prime(m)
是无用的。 我怀疑您是要传递x
作为参数。 (假设x
不为0或== m
)
第三, Prime()
从不返回任何内容。 这意味着它始终为!= 0
。
最后,为了给您一点帮助,我将把您链接到我对这个问题的一些答案 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.