【发布时间】:2021-11-28 19:42:40
【问题描述】:
我在编写一个在用户输入的整数“n”上下查找 5 个素数的程序时遇到问题
注意:如果素数少于 5 个,则打印尽可能多。如果 n 本身是素数,则不应包括在内。不允许使用列表或函数
这是我应该得到的输出:
Please enter n: 20
Larger prime numbers: 23 29 31 37 41
Smaller prime numbers: 19 17 13 11 7
这是我的尝试:
n = int(input("Number: "))
# n = 20
count1 = 0
x = 2
while count1<5:
for i in range(2, n+x):
if (n+x) % i ==0:
break
else:
print(n+x)
count1 += 1
break
x +=1
【问题讨论】:
-
当您说“不允许使用列表”时,您是什么意思?代码无法记住它发现的是素数?
-
没错。我应该在找到质数后立即打印它
-
在调试器中单步执行程序时会发生什么?您是否查看过输出是什么以及它与您的期望相比如何?例如,为什么它从 23 开始每隔一个数字打印一次?是一个 if-else 块,所有条件都导致
break你想要实现的目标吗?卡住是正常的,但是从 9 行代码中得到错误的输出似乎是一种情况,您可能会分享一些尝试调试的尝试。一个有用的指南是 Eric Lippert 的优秀 How to debug small programs。