Python:查找素数算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:查找素数算法相关的知识,希望对你有一定的参考价值。

最近我的老师对我的编码技巧提出了挑战,因为他看到我已经知道他在教什么了。问题如下。

创建一个程序,提示用户输入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)

从我从测试中学到的东西看来,似乎27在我的for循环或while循环期间从未检查过,即使它在numList数组中。

答案

永远不要从您正在迭代的列表中删除项目。而是创建一个新列表:

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)

以上是关于Python:查找素数算法的主要内容,如果未能解决你的问题,请参考以下文章

快速素数分解模块

查找下一个素数算法

用于查找第n个素数的Python脚本

Python 和 C++ 下字符串查找速度对比,你觉得Python适合算法竞赛吗

6-22——“ == ”不能用来比较两个字符串是否相等,解决方法——折半查找算法找素数的简单算法

6-22——“ == ”不能用来比较两个字符串是否相等,解决方法——折半查找算法找素数的简单算法