我有这个素数程序要解决:给定一个最大输入,我要使用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
答案 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
类型的条件。