統計小於n的質數個數
統計所有小於非負整數 n 的質數的數量。示例:輸入: 10
輸出: 4
解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7
class solution:
def countprimes(self, n: int) -> int:
import math
def judge(num):
l = math.sqrt(num)
for i in range(3,int(l)+1,2):
if num%i==0:
return false
return true
if n<=2: return 0
if n==3: return 1
count = 2
for i in range(5,n,2):
if judge(i):
count +=1
return count
# 思路:將有因子的數全部賦值=0
def countprimes2(self, n: int) -> int:
if n<=2: return 0
isp = [1 for i in range(n)]
isp[0],isp[1] =0,0
for i in range(2,n):
j = i
while j*i isp[i*j] = 0
j +=1
return sum(isp)
leetcode 204 質數的個數
判斷n以內的所有的質數的個數,直接的想法是判斷每個數是不是質數。然而n以內的數是由質數和合數組成的,合數可以由質數生成,質數的倍數就是乙個合數。判斷乙個數是否為質數,就是判斷2 根下n的每個整數是否可以被n整除,若都不能被整除,則為質數,否則為合數。換個角度,即2 根下n的每個整數的倍數都是合數,通...
篩法 求n以內質數個數
判斷n是否為素數 續篩法部分 區間篩法 若乙個數可以進行因數分解,則得到的兩個數一定是有乙個 x sqrt x x 另乙個 x sqrt x x 任何乙個數都可以拆分為若干個質因數的乘積,如6 2 3,7 1 7 複雜度o nn sqrt n n include using namespace st...
質數篩選 快速篩選出小於等於N的質數
此方法非常的簡單 1.維護乙個陣列vectorprime n 1,true 既讓陣列中的所有數都為真,表明它是質數。2.對於每乙個質數,刪除它的倍數,因為質數的倍數一定是合數。讓後將陣列中對應的數改為false,這樣就可以避免遍歷他。如下 int findprime int n return res...