擅长:python、mysql、java
<p>如果我正确地理解了这个问题,那么代码中就有一个逻辑缺陷,因为即使亚历克斯建议了更正(这是有效的),您也只需要打印出所有的数字,这些数字的素数等于用户输入的值,而不是用户输入的量,这似乎是个问题。你知道吗</p>
<p>例如,给定您的问题,如果用户输入10,我理解您应该打印前10个素数(1,2,3,5,7,11,13,17,19,23),而不是最多10个素数(1,2,3,5,7)</p>
<p>如果我的假设是正确的,代码应该是这样的:</p>
<pre><code>import math
def listPrimeNumbers(n):
l = int(math.sqrt(n))+1
if n == 1:
return True
for x in range(2, l):
if (n%x==0):
return False
return True
print("List Prime Numbers")
print(" ")
print("Enter how many prime numbers you want displayed")
print("Type in '0' to go back to the Main Menu")
print("\n"*10)
amountOfNumbers = int(input("Amount of Numbers > "))
counter = 0
n = 0
while (counter < amountOfNumbers):
n += 1
if listPrimeNumbers(n) == True:
counter += 1
print(n)
</code></pre>
<p>我省略了重复这个过程的部分,所以您需要重新运行程序以再试一次</p>