Python 列出n的先前素数

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

我试图用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
导入数学
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