Python Prime数字循环

时间:2014-11-11 20:40:42

标签: python primes

我很难结束循环。我试过休息,继续和通过。程序需要能够读取非整数并重复代码行,直到满足为止。我不能打破循环。

prime_num = input('Please enter an integer >= 2: ')

while not(prime_num.isdigit() and int(prime_num)<1):
    input('Please enter an integer >= 2: ')
for i in range(2,int(prime_num)+1):
    for x in range(2,i):
       if i%x == 0:
           break    
       else:            
           print (i)

3 个答案:

答案 0 :(得分:1)

第二次向最终用户询问整数时,未定义Prime Number。 试试

def prime_number():
    prime_num = input('Please enter an integer >= 2: ')
    while not(prime_num.isdigit() and int(prime_num)<1):
        prime_num = input('Please enter an integer >= 2: ')

    for i in range(2,int(prime_num)+1):
        for x in range(2,i):
            if i%x == 0:
                break
        else:
            print (i)

这是你想要的吗?

答案 1 :(得分:0)

当你第二次要求输入时......

while not(prime_num.isdigit() and int(prime_num)<1):
    input('Please enter an integer >= 2: ')

...您没有将结果分配回prime_num,因此永远不会满足条件。

不是重复input()行,而是采用不同的方法更有意义:

while True:
    prime_num = input('Please enter an integer >= 2: ')
    if prime_num.isdigit() and int(prime_num)>1:
        break
# etc.

答案 2 :(得分:0)

Break在Python中运行良好。它打破了你的两个循环的内部。但是,打破一个以上的循环没有中断。

您的代码的主要问题是您的算法存在问题。您的代码会将一个数字打印为每个数字&gt; = 2的素数,因为它不能被分割。例如,您可以打印一次&#34; 15&#34; (或任何其他非偶数),因为它不能被&#34; 2&#34;分开。

如果全部您测试的部门失败,您的算法必须确保只打印一个数字作为素数。