簡體   English   中英

判斷一個數是否為素數

[英]Identify whether or not a number is prime

下面的代碼對素數顯示“不是素數”,對非素數顯示“是素數”。 我做錯了什么?

quuN = int(input("ENTER NUMBER : "))

quuM = 2

if (quuN <= 0) :

    print("ENTER NON-NEGATIVE NUMBER PLEASE")


elif (quuN % quuM == 0) :

    print(" IS PRIME " )

else : 

    print("IS NOT PRIME ")

邏輯不對

質數(或質數)是大於 1 的自然數,除了 1 和它本身之外沒有其他正除數。 大於 1 且不是質數的自然數稱為合數。

下面是簡單的python代碼

def is_prime(n):
    for i in range(3, n):
        if n % i == 0:
            return False
    return True

上面的代碼正在檢查一個數字是偶數還是奇數。 如果你輸入一個質數,例如 17,代碼檢查 17 是否小於或等於 0。然后它檢查17%2 ,它的計算結果為 1,並且不是 0。因此執行 else 塊,它打印IS NOT總理

如果輸入偶數,則打印IS PRIME。

此代碼檢查質數。

def is_prime(n):
    import math
    for i in range(2, int(math.sqrt(n))+1):
        if n % i == 0:
            return False
    return True

我假設您是 python 的初學者,所以讓我指出檢查代碼中數字素性的邏輯不正確,您應該首先仔細閱讀素數的定義,當您這樣做時,請嘗試理解這個小例子它向您展示了如何檢查素數:

import math

def is_prime_naive(number):
    if number == 2:
       return True
    if number % 2 == 0:
        return False

    i = 3
    sqrt_number = math.sqrt(number)

    while i <= sqrt_number:
        if number % i == 0:
            return False
        i = i+2

    return True

for i in range(2,101):
    print "{0} {1} prime".format(i,"is" if is_prime_naive(i) else "is not")

現在,請注意上面的代碼是檢查數字是否為質數的最簡單但也是最慢的方法之一。 當您對素數的概念足夠熟悉時,您應該檢查檢查素數的最快方法,一些例子可能是費馬和米勒拉賓素數測試。 所以,祝你好運質數,你一定會玩得開心;-)

這是不使用任何庫的答案

注意:只需要檢查直到sqrt(n),解釋here

def isPrime(n):
    if (n<=1): return False

    for i in range(2, int(n**(.5))+1):
        if (n%i==0):return False

    return True

暫無
暫無

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

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