題目描述
解題思路
這道題不難,思路很簡單,迴圈找到符合要求的素數。但是暴力法的時間複雜度是o(n2),在n很大的時候會超時,所以得採用更高效的方法。
1、暴力法(提交會超時)
public
intcountprimes
(int n)}if
(flag ==
1)
count++;}
return count;
}
2、厄拉多塞篩法
要得到自然數n以內的全部質數,必須把不大於根號n的所有質數的倍數剔除,剩下的就是質數。
public
intcountprimes
(int n)}}
for(
int i =
2;i < n;i++
)return count;
}
204 計數質數
統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 這個題目思路很簡單,但是可能效率不高,裡面有一些小trick需要注意,所以在這裡記錄一下優化過程。思路1 逐個判斷每個數是否質數,超時 class solution d...
204 計數質數
統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 判斷質數的常規解法 如判斷n是否為質數,只需要判斷n是否能整除2 int sqrt n 厄拉多塞篩法 比如說求20以內質數的個數,首先0,1不是質數.2是第乙個質數,然...
204 計數質數
統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 埃拉託色尼篩選法,迴圈中置對應值的倍數為0,最後統計為1的個數,也就是質數的個數。class solution def countprimes self,n int i...