Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Menentukan sama ada Nombor adalah Perdana dalam C?

Bagaimana untuk Cekap Menentukan sama ada Nombor adalah Perdana dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-12-28 15:46:16185semak imbas

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

Cara Menentukan Nombor Perdana dalam C

Soalan membincangkan menentukan sama ada integer yang diberi adalah perdana dalam C. Penyelesaian C# asal yang disediakan ialah :

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

Untuk memahami cara melaksanakan ini dalam C, mari kita pecahkan algoritma:

  1. Semak sama ada nombor itu negatif, sifar atau satu. Ini bukan perdana.
  2. Lelaran daripada 2 kepada punca kuasa dua nombor.
  3. Untuk setiap lelaran, semak sama ada nombor itu boleh dibahagi dengan nilai semasa.
  4. Jika boleh dibahagi, nombor itu bukan perdana.
  5. Jika gelung selesai tanpa mencari pembahagi, nombor itu ialah utama.

Menterjemah algoritma ini ke dalam C, kita dapat:

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;
}

Perbezaan daripada penyelesaian C# asal termasuk:

  • bool bukan Jenis data C, jadi kami menggunakan int dan pulangkan 0/1 sebaliknya.
  • stdbool.h tidak diandaikan tersedia, jadi kami mengisytiharkan i secara manual.
  • Gelung berulang sehingga punca kuasa dua nombor untuk kecekapan.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menentukan sama ada Nombor adalah Perdana dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn