簡體   English   中英

我的 python 質數查找器不起作用

[英]My python Prime Number Finder doesn't work

我的代碼是:

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

首先 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM