首頁 >後端開發 >C++ >C語言中如何有效率地判斷一個數是否為質數?

C語言中如何有效率地判斷一個數是否為質數?

Linda Hamilton
Linda Hamilton原創
2024-12-28 15:46:16182瀏覽

How to Efficiently Determine if a Number is Prime in C?

如何在 C 中確定素數

問題討論確定給定整數在 C 中是否為素數。提供的原始C# 解是:

static bool IsPrime(int number)
{
    for (int i = 2; i < number; i++)
    {
        if (number % i == 0 && i != number)
            return false;
    }
    return true;
}

要了解如何在C 中實現這一點,讓我們分解一下演算法:

  1. 檢查數字是否為負數、零或一。這些不是質數。
  2. 從 2 迭代到數字的平方根。
  3. 對於每次迭代,檢查數字是否能被當前值整除。
  4. 如果可整除,則數字不是素數。
  5. 如果循環完成而沒有找到除數,則該數字是

將此演算法翻譯成C,我們得到:

int IsPrime(unsigned int number) {
    if (number <= 1) return 0; // zero and one are not prime
    unsigned int i;
    for (i=2; i*i<=number; i++) {
        if (number % i == 0) return 0;
    }
    return 1;
}

與原始演算法翻譯成C,我們得到:

  • 與原始C# 解方案的差異包括:
  • bool 不是a C 資料類型,所以我們使用int 並傳回0/1。
  • stdbool.h 是假設不可用,因此我們手動聲明 i。
循環迭代到數字的平方根以提高效率。

以上是C語言中如何有效率地判斷一個數是否為質數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn