【问题标题】:My python Prime Number Finder doesn't work我的 python 素数查找器不起作用
【发布时间】:2015-08-26 09:31:48
【问题描述】:

我的代码是:

currentNum = 0
divisible = True
prime = 0
counter = 1
counter2 = 1
counter3 = 0
counter4 = 0
while not counter == 10:
    while not counter2 == counter:
        currentNum = counter / counter2
        while not counter3 == counter:
            if currentNum == counter3:
                counter4 = counter4 + 1
        if counter4 == 1:
            divisible = True
            counter4 = 0
        else:
            divisible = False
            prime = prime + 1
            counter4 = 0
    counter3 = 0
    counter2 = 1
    counter = counter + 1
print(prime)

但由于某种原因,它只在我尝试使用它时显示0.5

【问题讨论】:

  • 你能解释一下它应该做什么。你说它是一个素数查找器,但你想实现什么算法?所有的计数器是怎么回事?
  • 不知道你想要实现什么,但你绝对不应该得到分数,你需要currentNum = counter // counter2

标签: python primes


【解决方案1】:

首先 0 和 1 不是素数,所以我们必须注意这一点。 2 也是素数,所以我们也必须注意这一点。现在离群素数已经出来了,我们可以专注于正常的素数。

素数只能被1和它自己整除。所以我们必须列出一个列表,并确保我们的输入不能被列表中的任何数字除。偶数也不能被 2 整除。

首先,我创建了一个函数来检查每个数字的输入,直到该数字,看看它是否可以除以其他数字。然后我检查数字是否为偶数(num%2 是检查是否为偶数的好方法)或者该数字是否可以除以任何其他数字。

看看我如何把偶数检查放在第一位以节省时间,如果数字是偶数,我们不必检查列表中的所有数字,我们可以返回 false 而无需遍历整个列表。

def is_prime(num):

    if num < 0 or num in [0,1]:
        return False
    elif num == 2: 
        return True   

    def prime_range_check():
        for number in range(2,num):
            if num%number == 0:
                return False

    if num % 2 == 0 or prime_range_check() == False:
        return False

    return True

【讨论】:

  • 你其实只需要查到num/2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 2018-12-06
  • 2021-09-20
  • 2016-08-17
相关资源
最近更新 更多