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

溫馨提示×

C++素數測試方法的比較

c++
小樊
93
2024-08-23 15:25:31
欄目: 編程語言

在C++中,有多種方法可以用來測試一個數是否為素數。以下是一些常見的方法的比較:

  1. 窮舉法:窮舉法是最簡單的方法,即對于一個數n,從2開始逐個檢查是否能整除n。這種方法的時間復雜度為O(n),效率較低。
bool isPrime(int n) {
    if (n <= 1) return false;
    for (int i = 2; i < n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}
  1. 優化的窮舉法:在窮舉法的基礎上,可以進行一些優化,比如只需要檢查到sqrt(n)即可,因為如果n有一個大于sqrt(n)的因子,那么一定有一個小于sqrt(n)的因子。這種方法的時間復雜度為O(sqrt(n)),略有提升。
bool isPrime(int n) {
    if (n <= 1) return false;
    for (int i = 2; i*i <= n; i++) {
        if (n % i == 0) {
            return false;
        }
    }
    return true;
}
  1. 厄拉托斯特尼篩法:厄拉托斯特尼篩法是一種更高效的方法,可以篩選出一定范圍內的所有素數。其基本思想是從2開始,不斷地將其倍數標記為非素數,從而剔除非素數。這種方法的時間復雜度為O(nloglogn),效率最高。
bool isPrime(int n) {
    if (n <= 1) return false;
    vector<bool> isPrime(n+1, true);
    isPrime[0] = isPrime[1] = false;
    for (int i = 2; i*i <= n; i++) {
        if (isPrime[i]) {
            for (int j = i*i; j <= n; j += i) {
                isPrime[j] = false;
            }
        }
    }
    return isPrime[n];
}

根據以上的比較,可以看出厄拉托斯特尼篩法是最有效的方法,適用于篩選一定范圍內的所有素數,而在單個數的素數測試中,優化的窮舉法可能是更好的選擇。

0
乌拉特中旗| 汉阴县| 诸城市| 灵丘县| 中西区| 浮梁县| 济宁市| 漠河县| 通榆县| 盐城市| 富锦市| 榆社县| 丹凤县| 滕州市| 夏邑县| 墨脱县| 柘荣县| 台南市| 衢州市| 库伦旗| 潞城市| 明星| 宣恩县| 尉氏县| 思茅市| 左权县| 通州市| 西乡县| 原阳县| 高雄县| 涞源县| 兰州市| 乌审旗| 泽库县| 五家渠市| 拜城县| 吴旗县| 开封县| 潜江市| 阿克苏市| 万宁市|