簡體   English   中英

這個python素數函數有什么問題?

[英]What's wrong with this python prime number function?

所以我只想檢查一下我的功能有什么問題。 它給出素數就好了但是當我輸入一個像4這樣的數字時,它打印出“4不是素數”然后“4是素數”。 什么似乎是錯誤? (我知道這很難過,但我花了8個小時做這個(初學者))。

def isprime(n):
    if n == 1:
        print ("1 is not prime.")
    if n == 2:
        print ("2 is a prime number.")
    for x in range (2, n):
        if n%x == 0:
            print (n, "is not prime.")
        if n%x != 0:
            print (n, "is a prime number.")

您的算法錯誤,您需要在檢測到因子后中斷,如果沒有因素,則打印是素數。

這是一個更正版本:

def isprime(n):
    if n == 1:
        print ("1 is not prime.")
        return
    if n == 2:
        print ("2 is a prime number.")
        return
    for x in range (2, n):
        if n%x == 0:
            print (n, "is not prime.")
            break
    else:
        print (n, "is a prime number.")

你應該在print(n, "is not prime.")下面添加一個break語句print(n, "is not prime.") ,否則它將繼續遍歷所有數字直到n,這是不必要的。

暫無
暫無

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

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