簡體   English   中英

計算素數的數量直到給定數量

[英]Count Number of Prime Numbers up to a Given Number

我目前正在嘗試創建一個 function 來計算素數的數量直到給定的數字。 但是,我認為我的代碼邏輯存在一些問題,因為我目前沒有取回正確數量的素數。 誰能幫我確定我的代碼有什么問題? 謝謝!

def count_primes(num):
    ctr = 0

    for i in range(num+1):
        for x in range(2,i):
            if (i%x) != 0:
                ctr += 1
                break
            else:
                break
            

    return ctr

print(count_primes(10))
#I get 4
print(count_primes(100))
#I get 49

邏輯問題如下 - 對於每個數字,您只需檢查它是否可被 2 整除並中斷。 讓我們模擬i=9 然后對於x=2(9 %2)!=0但 9 不是素數,而是算作一。 檢查以下代碼 -

def isPrime(n):
    if not isinstance(n, int):
       raise ValueError('n must be integer')
    if n <= 0:
       raise ValueError('n is negative or zero')
    if n==1: return False
    for i in range(2, n):
        if n %  i == 0:
           return False
    return True


def countPrime(n):
    ctr = 0
    for i in range(1, n+1):
         if isPrime(i):
            ctr += 1
    return ctr

免責聲明 - 有更有效的方法來檢查一個數字是否是素數

暫無
暫無

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

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