91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在C++中高效查找素數

c++
小樊
87
2024-08-23 15:24:29
欄目: 編程語言

在C++中高效查找素數可以使用篩選法,比如埃拉托斯特尼篩法(Sieve of Eratosthenes)。這種算法可以在O(nloglog(n))的時間復雜度內找到小于n的所有素數。

以下是一個使用埃拉托斯特尼篩法查找素數的示例代碼:

#include <iostream>
#include <vector>

std::vector<int> findPrimes(int n) {
    std::vector<bool> isPrime(n+1, true);
    std::vector<int> primes;

    for (int p = 2; p*p <=n; p++) {
        if (isPrime[p]) {
            for (int i = p*p; i <= n; i += p) {
                isPrime[i] = false;
            }
        }
    }

    for (int p = 2; p <= n; p++) {
        if (isPrime[p]) {
            primes.push_back(p);
        }
    }

    return primes;
}

int main() {
    int n = 100;
    std::vector<int> primes = findPrimes(n);

    for (int prime : primes) {
        std::cout << prime << " ";
    }

    return 0;
}

在上面的代碼中,首先創建一個大小為n+1的布爾型數組isPrime,用來表示每個數字是否為素數。然后從2開始遍歷數組,將所有素數的倍數標記為非素數。最后再遍歷數組,將所有標記為素數的數字放入primes數組中,最終返回primes數組即可。

這種方法可以高效地找到小于n的所有素數,時間復雜度為O(nloglog(n))。

0
昭通市| 乐业县| 丹凤县| 分宜县| 天水市| 枣强县| 青海省| 会东县| 鱼台县| 宁河县| 蒙自县| 彰武县| 红原县| 安新县| 兴宁市| 昭苏县| 阿鲁科尔沁旗| 敖汉旗| 电白县| 西吉县| 文安县| 赣榆县| 莆田市| 东阳市| 湖口县| 苏尼特左旗| 东莞市| 年辖:市辖区| 闸北区| 启东市| 顺义区| 印江| 墨脱县| 五华县| 兰坪| 息烽县| 聊城市| 忻州市| 都江堰市| 扶沟县| 青海省|