查找素数的Python程序(3.5)

查找素数的Python程序(3.5),python,python-3.x,Python,Python 3.x,我正在制作一个寻找素数的程序。用户被要求提供一个大于2(n)的数字,然后程序会列出一个从2开始到用户数字(n)结束的列表。在我的程序中,我应该将一个名为current的变量设置为2,然后在列表中循环查找电流的倍数并删除它们。在循环结束时,我将1添加到当前值,程序循环再次执行与之前相同的操作。每次都会打印该列表。我的程序运行正常(我使用数字10作为n进行测试),当它到达末尾时,10被保留,即使它应该被删除。请帮忙 这是我的密码: while True: global n n = i

我正在制作一个寻找素数的程序。用户被要求提供一个大于2(n)的数字,然后程序会列出一个从2开始到用户数字(n)结束的列表。在我的程序中,我应该将一个名为current的变量设置为2,然后在列表中循环查找电流的倍数并删除它们。在循环结束时,我将1添加到当前值,程序循环再次执行与之前相同的操作。每次都会打印该列表。我的程序运行正常(我使用数字10作为n进行测试),当它到达末尾时,10被保留,即使它应该被删除。请帮忙

这是我的密码:

while True:
    global n
    n = int ( input ( "Please enter a number larger than 2. " ) )
    if n > 2:
        break
    else:
        print ( "Your number is not larger than 2." )
        continue

current = 2
myList = list ( range ( 2, n + 1 ) )
while current < n:
    if current == []:
        break
    for i in reversed ( range ( len( myList )-1 ) ):
        if myList[i] % current == 0 and myList[i] != current and ( myList[i] / current ).is_integer(): myList.pop(i)
        print ( myList )
    current = current + 1
为True时:
全球n
n=int(输入(“请输入一个大于2的数字”)
如果n>2:
打破
其他:
打印(“您的号码不超过2。”)
持续
电流=2
myList=列表(范围(2,n+1))
当电流
对于反转(范围(len(myList)-1))中的i:
应为
用于反转的i(范围(len(myList)):

默认情况下,范围不包括最后一个数字:
range(5)
给出
0,1,2,3,4

要使其仅在进行更改时输出一行,请执行以下操作:

if myList[i] % current == 0 and myList[i] != current and ( myList[i] / current ).is_integer():
    myList.pop(i)
    print ( myList )
如果在If语句中进行打印,则只有当它进行更改时,才会显示新列表。

您的“for”循环有问题。去掉“-1”就可以了,因为范围是包含的,独占的。请注意,当寻找范围(2,n)内的素数时,您不必检查到n,只需检查到sqrt(n)。检查此链接。

这似乎是一种非常复杂的查找素数的方法。@DejaVuSansMono这是一个非常常见的家庭作业提示。@TemporalWolf哦。我不知道。我想说的是,平方根和检查显然更容易。但如果这是家庭作业,必须这样做,那就是了。@TemporalWolf我下次会这样做。因为我是新来的,我可以检查一下,但不会显示我有。