[英]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.