LeetCode 204. 计数质数(质数的倍数不是质数)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 204. 计数质数(质数的倍数不是质数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
統計所有小于非負整數 n 的質數的數量。
示例:輸入: 10 輸出: 4 解釋: 小于 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。2. 填表解題
- 2的倍數不是質數
- 3的倍數不是質數
- 5的倍數,7的倍數,11的倍數。。。質數的倍數不是質數
優化雙重循環的范圍,減少重復
class Solution { public:int countPrimes(int n) {if(n <= 2)return 0;bool isTrue[n];memset(isTrue,true,n*sizeof(bool));int count = 0;for(int i = 2; i < sqrt(n); ++i){if(isTrue[i])for(int j = i*i; j < n; j = j+i)isTrue[j] = false;}for(int i = 2; i < n; ++i)if(isTrue[i])count++;return count;} };https://www.lintcode.com/problem/find-prime 也有題目可以做
輸出n以內所有的素數
class Solution { public:/*** @param n: an integer* @return: return all prime numbers within n.*/vector<int> prime(int n) {// write your code herevector<int> ans;vector<bool> isprime(n+1, true);for(int i = 2; i <= n; ++i){if(isprime[i]){for(int j = i*i; j <= n; j += i)isprime[j] = false;}}for(int i = 2; i <= n; ++i)if(isprime[i])ans.push_back(i);return ans;} };總結
以上是生活随笔為你收集整理的LeetCode 204. 计数质数(质数的倍数不是质数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试金典 - 面试题 04.04.
- 下一篇: LeetCode 82. 删除排序链表中