Python 列出n的先前素数
我试图用python创建一个程序,它接受一个数字并确定这个数字是否为素数,如果它是素数,我需要它列出它前面的所有素数。我的代码有什么问题Python 列出n的先前素数,python,prime-factoring,Python,Prime Factoring,我试图用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
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
导入数学
def系数(n):
num=[]
对于范围(2,(n+1))内的x:
i=2
而i abs(n-1):
num.append(n)
打印(n,“为素数”,num)
其他:
打印(i,“倍”,n//i,“等于”,n)
返回
您的方法仅返回“n”是否为素数。
为此,不需要嵌套循环。就这样
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系数(n):
num=[]
对于范围(2,(n+1))内的x:
i=2
而我abs(x-1):
num.append(x)
如果n在num中:
打印数
其他:
打印str(n)+“不是num”
返回
是什么让你认为它有问题?
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