我正在尝试在python中创建一个程序,它接受一个数字并确定该数字是否为素数,如果它是素数,我需要它列出它之前的所有素数。我的代码出了什么问题?
import math
def factor(n):
num=[]
for x in range(2,(n+1)):
i=2
while i<=n-1:
if n % i == 0:
break
i = i + 1
if i > abs(n-1):
num.append(n)
print(n,"is prime",num)
else:
print(i,"times",n//i,"equals",n)
return
答案 0 :(得分:0)
您的方法仅返回&#39; n&#39;是否是素数。 为此,您不需要嵌套循环。就像这样
def factor(n):
num=[]
for x in range(2,(n+1)):
if n % x == 0:
break
if x > abs(n-1):
num.append(n)
print(n,"is prime",num)
else:
print(x,"times",n//x,"equals",n)
return
然后,如果你想要所有其他素数小于n,你可以使用素数筛选算法。
---------更新--------------
您的代码的修改,可以找到其他素数(但主筛算法仍然有比这更好的性能)
def factor(n):
num=[]
for x in range(2,(n+1)):
i=2
while i<=x-1:
if x % i == 0:
break
i = i + 1
if i > abs(x-1):
num.append(x)
if n in num:
print num
else:
print str(n) + ' is not num'
return