Cara menjalankan ujian Fermat untuk keunggulan dalam masa kurang dari 3 minit

Ujian Fermat didasarkan pada hasil dari teori nombor yang dikenali sebagai teorema kecil Fermat.

Menurut teorema kecil Fermat, jika n adalah nombor perdana dan d adalah bilangan bulat positif kurang dari n , maka d dinaikkan ke kekuatan n adalah selaras dengan d modulo n .

Sekiranya dua nombor mempunyai baki yang sama apabila dibahagi dengan n maka mereka dikatakan sebagai modulo n kongruen . d modulo n hanyalah baki nombor d apabila dibahagi dengan n .

Sebagai contoh, 34 sepadan dengan 16 (modulo 3) sebagai

34 modulo 3 = 1 dan 16 modulo 3 = 1.

Ujian Fermat untuk keunggulan

  1. Untuk nombor yang diberikan n , memilih rawak positif nombor d seperti yang d < ; n.
  2. Hitungkan (d ^ n) modulo n .
  3. d modulo n akan selalu menjadi d kerana kita selalu memilih d yang memenuhi syarat d < ; n.
  4. Sekiranya hasil (d ^ n) modulo n tidak sama dengan d , maka d tentunya tidak prima.
  5. Sekiranya hasil (d ^ n) modulo n sama dengan d , maka kemungkinan besar adalah n adalah perdana.
  6. Pilih satu lagi rawak d yang memenuhi syarat d < n dan ulangi langkah di atas.

Catatan : Contoh dalam catatan ini menggunakan Swift 4.1

Kita memerlukan fungsi untuk mengira eksponen nombor modulo nombor lain.

Kami menggunakan eksponensial modular untuk menghitung nilai ketika eksponen lebih besar dari 1 kerana ini memungkinkan kita melakukan pengiraan sementara hanya berurusan dengan angka kurang dari n ( modulo dalam fungsi di atas).

Ujian Fermat memilih secara rawak nombor d antara 1 dan n-1 ( nombor - 1 dalam fungsi di atas) termasuk. Tujuannya adalah untuk memeriksa sama ada modulo n baki daya d sama dengan d.

Ujian Fermat dijalankan untuk kiraan yang ditentukan. Sekiranya nombor gagal dalam ujian Fermat, kami yakin bahawa ia tidak unggul. Sekiranya nombor lulus ujian Fermat, ia tidak dijamin unggul. Kami cuba mengurangkan kebarangkalian ralat dalam ujian keutamaan kami dengan menjalankan ujian cukup kali.

Dengan mencuba semakin banyak nilai d (nombor positif rawak antara 1 dan n-1), kita dapat meningkatkan keyakinan kita terhadap hasilnya.