Periksa apakah suatu bilangan prima

Pengarang: John Pratt
Tanggal Pembuatan: 9 Februari 2021
Tanggal Pembaruan: 28 Juni 2024
Anonim
Teori Bilangan - Bilangan Prima
Video: Teori Bilangan - Bilangan Prima

Isi

Bilangan prima adalah bilangan yang hanya habis dibagi sendiri dan disebut 1 - bilangan lain senyawa nomor. Saat menguji apakah suatu bilangan adalah bilangan prima, ada beberapa opsi. Beberapa dari metode ini relatif sederhana tetapi sama sekali tidak praktis untuk jumlah yang lebih besar. Tes lain yang sering digunakan sebenarnya adalah algoritma lengkap berdasarkan satu kemungkinan yang terkadang keliru menganggap bilangan sebagai bilangan prima. Bacalah langkah 1 untuk mempelajari cara menguji diri sendiri jika Anda berurusan dengan bilangan prima.

Melangkah

Metode 1 dari 4: Cobalah untuk membagi

Mencoba membagi sejauh ini adalah cara termudah untuk menguji sebuah bilangan. Untuk nomor kecil biasanya juga merupakan cara tercepat. Tes ini didasarkan pada definisi bilangan prima: bilangan prima jika hanya habis dibagi dengan 1.

  1. Seharusnya n adalah angka yang ingin Anda uji. Bagilah bilangan n dengan semua kemungkinan bilangan bulat yang dapat dibagi. Untuk bilangan yang lebih besar seperti n = 101, sangatlah tidak praktis untuk membagi dengan bilangan bulat yang mungkin kurang dari n. Untungnya, ada beberapa trik untuk mengurangi jumlah faktor yang akan diuji.
  2. Tentukan apakah n bahkan. Semua bilangan genap habis habis dibagi 2. Oleh karena itu, jika n genap, Anda dapat mengatakannya n adalah bilangan komposit (dan karena itu bukan bilangan prima). Untuk segera menentukan apakah suatu angka genap, Anda hanya perlu memperhatikan digit terakhir. Jika digit terakhir adalah 2, 4, 6, 8 atau 0, maka bilangan tersebut genap dan bukan bilangan prima.
    • Satu-satunya pengecualian untuk aturan ini adalah bilangan 2 itu sendiri, yang karena habis habisnya dan 1, juga bilangan prima. 2 adalah satu-satunya bilangan prima genap.
  3. Bagian n dengan angka apa pun antara 2 dan n-1. Karena bilangan prima tidak memiliki faktor selain dirinya sendiri dan 1, dan karena faktor bilangan bulat lebih kecil dari hasil perkaliannya, memeriksa pembagian bilangan bulat kurang dari n dan lebih besar dari 2 akan menentukan apakah n adalah bilangan prima. Kita mulai setelah 2 karena bilangan genap (kelipatan 2) tidak bisa menjadi bilangan prima. Ini jauh dari cara yang efisien untuk menguji, seperti yang akan Anda lihat di bawah.
    • Misalnya, jika kita ingin menggunakan metode ini untuk menguji apakah 11 adalah bilangan prima atau tidak, kita akan membagi 11 dengan 3, 4, 5, 6, 7, 8, 9, dan 10, mencari jawaban bilangan bulat tanpa sisa. Karena tidak ada satu pun dari angka-angka ini yang benar-benar cocok dengan 11, kita dapat mengatakan bahwa 11 adalah satu adalah bilangan prima.
  4. Untuk menghemat waktu, hanya uji hingga sqrt (n), tercakup. Menguji bilangan n dengan memeriksa semua bilangan antara 2 dan n-1 dapat dengan cepat memakan banyak waktu. Misalnya, jika kita ingin memeriksa apakah 103 adalah bilangan prima dengan metode ini, kita harus membaginya dengan 3, 4, 5, 6, 7 ... dst, sampai ke 102! Untungnya, pengujian seperti ini tidak perlu dilakukan. Dalam praktiknya, Anda hanya perlu menguji faktor-faktor antara 2 dan akar kuadrat dari n. Jika akar kuadrat dari n bukan angka, bulatkan ke bilangan bulat terdekat dan uji ke angka ini. Lihat di bawah untuk penjelasannya:
    • Mari kita periksa faktor dari 100. 100 = 1 × 100, 2 × 50, 4 × 25, 5 × 20, 10 × 10, 20 × 5, 25 × 4, 50 × 2 and 100 × 1. Perhatikan bahwa setelah 10 × 10, faktornya sama jika itu untuk 10 × 10, baru kemudian dibalik. Secara umum, kita dapat mengabaikan faktor-faktor dari n lebih besar dari akar (n) karena mereka hanyalah kelanjutan dari faktor-faktor yang lebih kecil dari akar (n).
    • Mari coba contoh. Jika n = 37, maka kita tidak perlu menguji semua bilangan dari 3 sampai 36 untuk menentukan apakah n adalah bilangan prima. Sebagai gantinya, kita hanya perlu melihat angka antara 2 dan akar persegi (37) (dibulatkan ke atas).
      • akar persegi (37) = 6,08 - kita akan membulatkannya menjadi 7.
      • 37 tidak habis habis dibagi 3, 4, 5, 6, dan 7 sehingga kami dapat dengan yakin menyatakan bahwa itu adalah satu bilangan prima aku s.
  5. Untuk lebih menghemat waktu, kami hanya menggunakan faktor prima. Dimungkinkan untuk membuat proses pengujian dengan membagi lebih pendek lagi dengan tidak memasukkan faktor-faktor yang bukan bilangan prima. Menurut definisi, setiap bilangan komposit dapat dinyatakan sebagai hasil kali dari dua atau lebih bilangan prima. Jadi tidak perlu membagi bilangan n dengan bilangan komposit - ini sama dengan membagi bilangan prima beberapa kali. Jadi, kita dapat lebih mempersempit daftar faktor yang mungkin menjadi hanya bilangan prima yang kurang dari akar (n).
    • Ini berarti bahwa semua faktor genap serta faktor yang merupakan kelipatan bilangan prima dapat dilewati.
    • Sebagai contoh, mari kita coba untuk menentukan apakah 103 adalah bilangan prima atau bukan. Akar kuadrat dari 103 adalah 11 (dibulatkan ke atas). Bilangan prima antara 2 dan 11 adalah 3, 5, 7 dan 11. 4, 6, 8 dan 10 adalah genap dan 9 adalah kelipatan 3, bilangan prima, jadi kita bisa melewatkannya. Dengan melakukan ini, kami telah mengurangi daftar faktor yang mungkin menjadi hanya 4 angka!
      • 103 tidak habis habis dibagi 3, 5, 7 atau 11, jadi sekarang kita tahu bahwa 103 adalah satu bilangan prima aku s.

Metode 2 dari 4: Menggunakan Teorema Kecil Fermat

Pada tahun 1640, matematikawan Prancis Pierre de Fermat pertama kali mengajukan teorema (sekarang dinamai menurut namanya) yang dapat sangat membantu dalam menentukan apakah suatu bilangan adalah bilangan prima atau tidak. Secara teknis, uji Fermat dimaksudkan untuk memverifikasi bahwa suatu bilangan adalah komposit, bukan bilangan prima. Ini karena pengujian dapat menunjukkan dengan "kepastian absolut" bahwa suatu bilangan adalah komposit, tetapi hanya "probabilitas" bahwa suatu bilangan adalah bilangan prima. Teorema kecil Fermat berguna dalam situasi di mana mencoba untuk membagi tidak praktis dan ketika ada daftar angka yang tersedia yang merupakan pengecualian untuk teorema tersebut.


  1. Seharusnya n nomor tersebut untuk pengujian. Anda menggunakan tes ini untuk menentukan apakah bilangan tertentu n adalah bilangan prima. Namun, seperti disebutkan di atas, teorema ini terkadang keliru mencirikan beberapa senyawa sebagai bilangan prima. Penting untuk mempertimbangkan hal ini dan memeriksa jawaban Anda, yang dijelaskan di bawah ini.
  2. Pilih bilangan bulat Sebuah antara 2 dan n-1 (termasuk). Bilangan bulat yang Anda pilih tidak penting. Karena parameter untuk a include 2 dan n-1, Anda juga dapat menggunakannya.
    • Contoh: Apakah 100 bilangan prima atau tidak. Misalkan kita ambil 3 sebagai nilai uji - ini antara 2 dan n-1, jadi itu sudah cukup.
  3. menghitung Sebuah (mod n). Mengerjakan ungkapan ini membutuhkan pengetahuan tentang sistem matematika yang disebut matematika modular. Dalam matematika modular, angka kembali ke nol setelah mencapai nilai tertentu, juga dikenal sebagai modulus. Anda dapat menganggap ini seperti jam: pada akhirnya jarum jam akan kembali ke jam 1 setelah jam 12, bukan ke jam 13. Modulusnya dicatat sebagai (mod n). Jadi pada langkah ini Anda menghitung a dengan modulus n.
    • Cara lainnya adalah menghitung a, membaginya dengan n, lalu menggunakan sisanya sebagai jawaban Anda. Kalkulator khusus dengan fungsi modulus bisa sangat berguna saat membagi bilangan besar, karena kalkulator tersebut dapat langsung menghitung sisa pembagian.
    • Menggunakan kalkulator seperti itu dalam contoh kita, kita dapat melihat bahwa 3/100 memiliki sisa 1. Jadi, 3 (mod 100) adalah 1.
  4. Jika kita menghitungnya dengan tangan, kita menggunakan eksponen sebagai format pendek. Jika Anda tidak memiliki kalkulator dengan fungsi modulus, gunakan notasi dengan eksponen untuk mempermudah prosedur penentuan sisanya. Lihat di bawah:
    • Dalam contoh kita, kita menghitung 3 dengan modulus 100. 3 adalah angka yang sangat, sangat besar - 515.377.520.732.011.331.036.461.129.765.621.272.702.107.522.001 - sangat besar sehingga menjadi sangat sulit untuk dikerjakan. Daripada menggunakan jawaban 48-digit untuk 3, lebih baik kita menuliskannya sebagai eksponen, jadi (((((((3)*3))))*3)). Ingatlah bahwa menghitung eksponen eksponen memiliki efek mengalikan eksponen ((x) = x).
      • Sekarang kita bisa menentukan sisanya. Mulailah dengan menyelesaikan ((((((3) * 3)))) * 3)) di bagian dalam tanda kurung dan cari jalan keluarnya, dengan membagi setiap langkah dengan 100. Setelah kami menemukan sisanya, kami akan menggunakannya untuk langkah berikutnya daripada jawaban sebenarnya. Lihat di bawah:
        • ((((((9) * 3)))) * 3)) - 9/100 tidak memiliki sisa, jadi kita dapat melanjutkan.
        • (((((27)))) * 3)) - 27/100 tidak memiliki sisa, jadi kita bisa melanjutkan.
        • ((((729))) * 3)) - 729/100 = 7 R 29. Sisa kami adalah 29. Kami melanjutkan ke langkah berikutnya, bukan 729.
        • ((((29=841)) * 3)) - 841/100 = 8 R 41. Kami menggunakan 41 sisa kami lagi di langkah berikutnya.
        • (((41 = 1681) * 3)) - 1681/100 = 16 R 81. Kami menggunakan sisa 81 kami di langkah berikutnya.
        • ((81*3 = 243)) - 243/100 = 2 R 43. Kita akan menggunakan sisa 43 kita di langkah berikutnya.
        • (43 = 1849) - 1849/100 = 18 R 49. Kita akan menggunakan 49 sisa kita di langkah berikutnya.
        • 49 = 2401 - 2401/100 = 24 R 1. Sisa akhir kita adalah 1. Dengan kata lain, 3 (mod 100) = 1. Perhatikan bahwa ini adalah jawaban yang sama seperti yang kita hitung di langkah sebelumnya!
  5. Cari tahu apakah Sebuah (mod n) = Sebuah (mod n). Jika tidak, n adalah majemuk. Jika benar maka n mungkin, (tapi tidak yakin) bilangan prima. Mengulangi tes dengan nilai yang berbeda untuk a dapat membuat hasil lebih pasti, tetapi ada bilangan komposit langka yang memenuhi teorema Fermat untuk semua nilai a. Ini disebut bilangan Carmichael - bilangan terkecil adalah 561.
    • Dalam contoh kita, 3 (mod 100) = 1 dan 3 (mod 100) = 3.1 ≠ 3, jadi kita dapat mengatakan bahwa 100 adalah bilangan komposit.
  6. Gunakan nomor Carmichael untuk memastikan hasil Anda. Mengetahui bilangan mana yang memenuhi deret Carmichael sebelum melanjutkan dapat menghemat banyak kekhawatiran tentang apakah suatu bilangan adalah bilangan prima atau tidak. Secara umum, bilangan Carmichael adalah hasil perkalian bilangan prima individu, di mana untuk semua bilangan prima dinyatakan bahwa jika p adalah pembagi n, maka p-1 juga merupakan pembagi dari n-1. Daftar bilangan Carmichael online bisa sangat berguna untuk menentukan apakah suatu bilangan prima, menggunakan Teorema Kecil Fermat.

Metode 3 dari 4: Menggunakan Tes Miller-Rabin

Tes Miller-Rabin bekerja dengan cara yang sama seperti teorema kecil Fermat, tetapi lebih baik menangani bilangan non-standar seperti bilangan Carmichael.


  1. Seharusnya n adalah bilangan ganjil yang ingin kami uji untuk keutamaan. Seperti dalam metode yang ditunjukkan di atas, n adalah variabel yang ingin kita tentukan primalitasnya.
  2. Tekanan n-1 dalam bentuk 2 × d di mana d aneh. Angka n adalah bilangan prima jika ganjil. Jadi n - 1 harus genap. Karena n - 1 genap, ini dapat ditulis sebagai pangkat 2 kali bilangan ganjil. Jadi, 4 = 2 × 1; 80 = 2 × 5; dan seterusnya.
    • Misalkan kita ingin menentukan apakah n = 321 adalah bilangan prima. 321 - 1 = 320, yang dapat kita nyatakan sebagai 2 × 5.
      • Dalam hal ini n = 321 adalah bilangan yang cocok. Menentukan n - 1 untuk n = 371 mungkin memerlukan nilai d yang besar, membuat keseluruhan proses menjadi lebih sulit di tahap selanjutnya. 371 - 1 = 370 = 2 × 185
  3. Pilih nomor apa saja Sebuah antara 2 dan n-1. Bilangan pasti yang Anda pilih tidak masalah - hanya saja bilangan tersebut harus kurang dari n dan lebih besar dari 1.
    • Dalam contoh kita dengan n = 321, kita memilih a = 100.
  4. menghitung Sebuah (mod n). Jika Sebuah = 1 atau -1 (mod n), lalu lolos n tes Miller-Rabin dan mungkin bilangan prima. Seperti Teorema Kecil Fermat, pengujian ini tidak dapat menentukan dengan kepastian absolut keutamaan suatu bilangan, tetapi membutuhkan pengujian tambahan.
    • Dalam contoh kita dengan n = 321, a (mod n) = 100 (mod 321). 100 = 10.000.000.000 (mod 321) = 313. Kami menggunakan kalkulator khusus, atau metode singkatan dengan eksponen seperti yang dijelaskan sebelumnya, untuk mencari sisa 100/321.
      • Karena kita belum memperoleh 1 atau -1, kita tidak dapat mengatakan dengan pasti bahwa n adalah bilangan prima. Tetapi masih ada lagi yang perlu kita lakukan - baca terus.
  5. Karena hasilnya tidak sama dengan 1 atau -1, hitung Sebuah, Sebuah, ... dan seterusnya, hingga Sebuahd. Hitung pangkat d kali, hingga 2. Jika salah satu dari ini sama dengan 1 atau -1 (mod n), lalu lolos n tes Miller-Rabin dan mungkin prima. Jika Anda telah menentukan bahwa n lulus ujian, maka periksa jawaban Anda (lihat langkah di bawah). Jika n gagal dalam salah satu tes ini, itu adalah salah satu tersusun jumlah.
    • Sebagai pengingat, dalam contoh kami, nilai a adalah 100, nilai s adalah 6, dan d adalah 5. Kami melanjutkan pengujian seperti yang ditunjukkan di bawah ini:
      • 100 = 1 × 10.
        • 1 × 10 (mod 321) = 64,64 ≠’ 1 atau -1. Lanjutkan dengan tenang.
      • 100 = 1 × 10.
        • 1 × 10 (mod 321) = 244.244 1 atau -1.
      • Pada titik ini kita bisa berhenti. s - 1 = 6 - 1 = 5. Sekarang kita telah mencapai 4d = 2, dan tidak ada pangkat 2 kali d di bawah 5d. Karena tidak ada perhitungan kita yang menjawab 1 atau -1, kita dapat mengatakan bahwa n = 321 satu tersusun nomor adalah.
  6. Jika n lulus uji Miller-Rabin, ulangi untuk nilai lainnya Sebuah. Jika Anda telah menemukan bahwa nilai n bisa jadi bilangan prima, coba lagi dengan nilai acak yang berbeda untuk a untuk mengkonfirmasi hasil tes. Jika n benar-benar prima, itu akan benar untuk setiap nilai a. Jika n adalah bilangan komposit, itu akan gagal untuk tiga perempat dari nilai a. Ini memberi Anda kepastian lebih dari Teorema Kecil Fermat, di mana pasti bilangan komposit (bilangan Carmichael) lulus tes untuk setiap nilai a.

Metode 4 dari 4: Menggunakan teorema sisa bahasa Tionghoa

  1. Pilih dua nomor. Salah satu bilangan tersebut bukan bilangan prima dan yang kedua adalah bilangan yang diuji keutamaannya.
    • "Tes Nomor 1" = 35
    • Tes nomor2 = 97
  2. Pilih dua titik data yang lebih besar dari nol dan kurang dari TestNumber1 dan TestNumber2. Mereka tidak bisa sama satu sama lain.
    • Data1 = 1
    • Data2 = 2
  3. Hitung MMI (Pembalikan Perkalian Matematika) untuk Tes Nomor1 dan Nomor Tes2
    • Hitung MMI
      • MMI1 = Nomor Tes2 ^ -1 Mod Nomor Tes1
      • MMI2 = Nomor Tes1 ^ -1 Mod Nomor Tes2
    • Hanya untuk bilangan prima (akan ada hasil untuk bilangan non-prima, tapi itu bukan MMI):
      • MMI1 = (TestNumber2 ^ (TestNumber1-2))% TestNumber1
      • MMI2 = (TestNumber1 ^ (TestNumber-2))% TestNumber2
    • Begitu:
      • MMI1 = (97 ^ 33)% 35
      • MMI2 = (35 ^ 95)% 97
  4. Buat tabel biner untuk setiap MMI hingga Log2 dari Modulus
    • Untuk MMI1
      • F (1) = Nomor Tes 2% Nomor Tes1 = 97% 35 = 27
      • F (2) = F (1) * F (1)% Tes Nomor1 = 27 * 27% 35 = 29
      • F (4) = F (2) * F (2)% Tes Nomor1 = 29 * 29% 35 = 1
      • F (8) = F (4) * F (4)% Tes Nomor1 = 1 * 1% 35 = 1
      • F (16) = F (8) * F (8)% Tes Nomor1 = 1 * 1% 35 = 1
      • F (32) = F (16) * F (16)% Tes Nomor1 = 1 * 1% 35 = 1
    • Hitung logaritma biner dari TestNumber1 - 2
      • 35 -2 = 33 (10001) basis 2
      • MMI1 = F (33) = F (32) * F (1) mod 35
      • MMI1 = F (33) = 1 * 27 Mod 35
      • MMI1 = 27
    • Untuk MMI2
      • F (1) = Tes Nomor1% Tes Nomor2 = 35% 97 = 35
      • F (2) = F (1) * F (1)% Tes Nomor2 = 35 * 35 mod 97 = 61
      • F (4) = F (2) * F (2)% Tes Nomor2 = 61 * 61 mod 97 = 35
      • F (8) = F (4) * F (4)% Tes Nomor2 = 35 * 35 mod 97 = 61
      • F (16) = F (8) * F (8)% Nomor Tes2 = 61 * 61 mod 97 = 35
      • F (32) = F (16) * F (16)% Tes Nomor2 = 35 * 35 mod 97 = 61
      • F (64) = F (32) * F (32)% Tes Nomor2 = 61 * 61 mod 97 = 35
      • F (128) = F (64) * F (64)% Nomor Tes2 = 35 * 35 mod 97 = 61
    • Hitung logaritma biner dari TestNumber2 - 2
      • 97 - 2 = 95 = (1011111) basis 2
      • MMI2 = (((((F (64) * F (16)% 97) * F (8)% 97) * F (4)% 97) * F (2)% 97) * F (1)% 97)
      • MMI2 = (((((35 * 35)% 97) * 61)% 97) * 35% 97) * 61% 97) * 35% 97)
      • MMI2 = 61
  5. Hitung (Data1 * TestNumber2 * MMI1 + Data2 * TestNumber1 * MMI2)% (TestNumber1 * TestNumber)
    • Jawab = (1 * 97 * 27 + 2 * 35 * 61)% (97 * 35)
    • Jawab = (2619 + 4270)% 3395
    • Jawaban = 99
  6. Periksa bahwa "TestNumber1" bukan bilangan prima1
    • Hitung (Jawaban - Data1)% Nomor Tes1
    • 99 -1 % 35 = 28
    • Karena 28 lebih besar dari 0, 35 bukan bilangan prima
  7. Periksa apakah TestNumber2 adalah bilangan prima
    • Hitung (Jawaban - Data2)% Nomor Tes2
    • 99 - 2 % 97 = 0
    • Karena 0 sama dengan 0, 97 adalah bilangan prima potensial
  8. Ulangi langkah 1 hingga 7 setidaknya dua kali lagi.
    • Jika langkah 7 sama dengan 0:
      • Gunakan "TestNumber1" yang berbeda jika TestNumber1 bukan bilangan prima.
      • Gunakan TestNumber1 lain di mana TestNumber1 sebenarnya adalah bilangan prima. Dalam kasus ini, langkah 6 dan 7 sama dengan 0.
      • Gunakan titik data yang berbeda untuk data1 dan data2.
    • Jika langkah 7 selalu sama dengan 0, maka probabilitas bahwa bilangan 2 adalah bilangan prima sangat tinggi.
    • Langkah 1 sampai 7 diketahui salah dalam kasus tertentu ketika bilangan pertama bukan bilangan prima dan yang kedua adalah faktor prima dari bilangan non-prima "Nomor Tes 1". Ini berfungsi di semua skenario di mana kedua bilangan tersebut adalah bilangan prima.
    • Alasan langkah 1 sampai 7 diulang adalah karena ada beberapa skenario di mana, meskipun TestNumber1 bukan bilangan prima dan TestNumber2 bukan bilangan prima, kedua bilangan dari Langkah 7 masih nol. Kondisi ini jarang terjadi. Dengan mengubah TestNumber1 ke bilangan non-prima lainnya, jika TestNumber2 bukan bilangan prima, TestNumber2 tidak akan lagi sama dengan nol, di langkah 7. Kecuali untuk kasus di mana "TestNumber1" adalah faktor dari TestNumber2, bilangan prima akan selalu nol. Berada di langkah 7.

Tips

  • 168 bilangan prima di bawah 1000 adalah: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997
  • Ketika mencoba membagi lebih lambat daripada metode yang lebih canggih, itu masih efisien untuk jumlah yang lebih kecil. Bahkan saat menguji angka yang lebih besar, tidak jarang untuk memeriksa angka kecil terlebih dahulu sebelum beralih ke metode yang lebih canggih.

Kebutuhan

  • Kertas, pulpen, pensil dan / atau kalkulator untuk berolahraga