繁体   English   中英

Python:查找素数算法

[英]Python: Find Prime Number Algorithm

最近,我的老师对我的编码技能提出了挑战,因为他看到我已经对他的教学有所了解。 问题如下。

创建一个程序,提示用户输入2个数字。 然后,程序将显示两个给定数字之间的所有素数,包括给定数字。 注意:您不能假定第一个输入大于第二个输入。

因此,我提出了这个问题,并构建了一个相当简单的算法,并对其进行了运行。 我今天打开了它,以查明由于某些原因我的输出有时不正确,例如,当您输入8和29时我得到27。我正在寻找关于我的逻辑有什么问题的提示 ,因为我无法终生我在做什么错。 我不想直接解决问题,因为我想从中学到很多东西,并尽可能自己做。

numbers = [int(input("First Number")), int(input("Second Number"))]
numbers.sort()

numList = []
#Removing Even Numbers
for num in range(numbers[0],numbers[1] + 1):
    if num % 2 != 0:
        numList.append(num)

#Checking For Prime Numbers
for currNum in numList:
   #Set Start number to divide
    i = 2
    while i < currNum:
        #Checks if the currNum can be divisble by i and is a whole number
        if currNum % i != 0:
          i = i + 1
        else :
          numList.remove(currNum)
          break

print(numList)

从我从测试中学到的知识来看,即使在numList数组中,似乎在我的for循环或while循环中也从未检查过27。

切勿从要迭代的列表中删除项目。 而是创建一个新列表:

numbers = [int(input("First Number")), int(input("Second Number"))]
numbers.sort()

primes = []
for num in range(numbers[0], numbers[1] + 1):
    #Set Start number to divide
    i = 2
    while i < num:
        #Checks if the currNum can be divisble by i and is a whole number
        if num % i == 0:
            break
        i += 1
    else:
        primes.append(num)

print(primes)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM