在Python中使用嵌套的while循环确定素数

时间:2018-07-04 22:56:19

标签: python while-loop

我有这个素数程序要解决:给定一个最大输入,我要使用while循环内的一个while循环来确定2和最大输入之间的所有素数。
我知道使用范围和/或数学函数会更简单,但出于此分配的目的,我需要使用while循环。

使用max = 5输出2,3,4测试下面的代码。
正确的输出为2,3,5

max = int(input('Enter the max integer: '))
start_number = 2

while start_number <= max:
    interval_number = start_number
    while interval_number <= max: 
        if max % interval_number != 0: 
            print(interval_number)
            interval_number += 1
    start_number += 1

2 个答案:

答案 0 :(得分:2)

可能更容易用于循环。该程序假定数字是质数,然后检查所有数字。

实时演示:https://repl.it/repls/MidnightblueWobblyPlane

max = int(input('Enter the max integer: '))
for number in range(2, max+1): 
    is_prime = True
    for interval_num in range(2, number):
        if number % interval_num == 0:
            is_prime = False
            break

    if is_prime:
        print(number)

但是,如果必须使用,则使用while循环,即可开始。逻辑相同:

实时演示:https://repl.it/repls/BlandQualifiedBetatest

max = int(input('Enter the max integer: '))
possiblePrime = 2
while possiblePrime < max+1: 
    isPrime = True
    num = 2
    while num < possiblePrime:
        if possiblePrime % num == 0:
            isPrime = False
            break
        num += 1

    if isPrime:
        print(possiblePrime)

    possiblePrime += 1

希望它有所帮助!

答案 1 :(得分:0)

最好的方法是使用Sieve of Eratosthenes。如果要使用两个嵌套的PublisherCallbackChannelImpl循环,请考虑对于每个数字,您确实需要检查除数,直到当前数字的平方根为止。因此,在某处您将拥有while类型的条件。