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
Lepaskan: 2024-12-28 15:46:16
asal
230 orang telah melayarinya

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan