• Tidak ada hasil yang ditemukan

BAB III PENGEMBANGAN TEOREMA DAN PERANCANGAN PROGRAM

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PENGEMBANGAN TEOREMA DAN PERANCANGAN PROGRAM"

Copied!
12
0
0

Teks penuh

(1)

PENGEMBANGAN TEOREMA

DAN PERANCANGAN PROGRAM

3.1 Pengembangan Teorema

Pada penelitian dan perancangan algoritma ini , akan dibahas mengenai beberapa teorema uji primalitas yang telah ditemukan baru – baru ini. Teorema – teorema ini tidak seluruhnya akan digunakan dalam pengembangan algoritma, oleh karena keterbatasan dari masing – masing teorema. Berikut ini adalah teorema – teorema uji primalitas.

Teorema 3.1.1 Teorema Lucas

Jika terdapat suatu bilangan bulat a di mana an-1≡ 1 (mod n) dan a(n-1)/p≡ 1 (mod n) untuk semua bilangan prima p yang habis membagi n-1, maka n adalah bilangan prima.

Bukti

Misalkan a mempunyai order k modulo n. Teorema 2.8.1 menyatakan bahwa kondisi )

(mod 1

1 n

an mengakibatkan k | n – 1; katakanlah, n – 1 = kj untuk suatu j. Jika j > 1, maka j mempunyai suatu pembagi prima q. Sehingga terdapatlah suatu bilangan bulat h yang memenuhi j = qh. Sebagai hasilnya,

) (mod 1 1 ) ( / ) 1 ( a n a nq = k h h

(2)

yang bertentangan dengan hipotesis di atas. Sehingga diperoleh j = 1. Tapi kita tahu bahwa order dari a tidak melebihiφ(n). Jadi, n – 1 = k ≤φ(n)≤ n – 1, sehingga

) (n

φ = n – 1, di mana hal ini menyatakan bahwa n adalah prima. Contoh

Kita ambil n = 997. Untuk a = 7, diperoleh 7996 1(mod997). Karena n – 1 = 996 = 22 · 3 · 83, kita hitung ) 997 (mod 1 7 7996/2 = 498 = ) 997 (mod 304 7 7996/3 = 332 = ) 997 (mod 9 7 7996/83 = 12 = .

Berdasarkan Teorema 3.1.1, dapat disimpulkan bahwa 997 adalah prima.

Teorema 3.1.2 Pengembangan Teorema Lucas

Jika untuk setiap bilangan prima pi yang membagi n – 1 terdapatlah suatu bilangan bulat ai di mana ain-1≡ 1 (mod n) tetapi ai(n-1)/pi≡ 1 (mod n), maka n adalah bilangan prima. Bukti Misalkan bahwa n – 1 = kn n k k p p p 1 2L 2

1 , di mana para pi merupakan bilangan – bilangan prima yang berlainan. Misalkan juga hi adalah order ai modulo n. Berdasarkan fakta bahwa hi | n – 1 dan hi | (n – 1)/ pi menghasilkan ki

i

p | hi. Tetapi untuk setiap i kita dapatkan hi |φ(n), sehingga ki

i

p |φ(n). Akibatnya n – 1 | φ(n), sehingga n adalah bilangan prima.

(3)

Kita ambil lagi n = 997. Dengan mengetahui bahwa pembagi – pembagi prima dari n

– 1 = 996 adalah 2, 3 dan 83, kita peroleh untuk basis – basis yang berbeda 3, 5 dan 7 bahwa ) 997 (mod 40 3 3996/83 = 12 = ) 997 (mod 996 5 5996/2 = 498 = ) 997 (mod 304 7 7996/3 = 332 = .

Sesuai dengan Teorema 3.1.2, maka dapat kita simpulkan bahwa 997 adalah prima.

Kedua teorema di atas sudah cukup mengurangi permasalahan uji primalitas bilangan n dengan cara menggunakan faktorisasi dari n – 1. Tetapi untuk mencari faktor – faktor dari n – 1 tidak lebih mudah daripada mencari faktor – faktor dari bilangan n itu sendiri. Selain itu pencarian pengujian memerlukan pemangkatan dari suatu basis terhadap bilangan itu sendiri dibagi masing – masing faktor dari bilangan tersebut. Semakin banyak faktor dari bilangan tersebut perhitungan yang dibutuhkan untuk pengujian semakin banyak, sehingga perhitungan menjadi semakin rumit dan panjang. Oleh karena itu dikembanganlah teorema berikut.

Teorema 3.1.3 Teorema Pocklington

Misalkan n – 1 = mj, di mana m = ks s k k p p p 1 2L 2

1 , mndan gcd(m,j) = 1. Jika untuk setiap bilangan prima pi (1 ≤ is) terdapatlah suatu bilangan bulat ai di mana

) (mod 1 1 n an i ≡ − dan gcd(a(n−1)/pi 1,n)=1

n , maka n adalah bilangan prima.

(4)

Tidak berbeda jauh dengan argumen kita pada Teorema 3.1.2. Misalkan p sebagai pembagi prima dari n dan kita ambil hi sebagai order ai modulo p, sehingga hi | p – 1. Dari kongruensi an 1 1(modp)

i

, kita dapatkan hi | n – 1. Hipotesis

1 ) , 1 gcd(a(n−1)pi n =

i menyatakan bahwa ai(n 1)pi ≠1(modp)

sehingga hi

| (n – 1)/pi. Dapat diperlihatkan bahwa ki

i

p | hi, yang menghasilkan kita pada ki

i p | p – 1. Karena hasil ini berlaku untuk setiap i, maka m | p – 1. Sehingga kita dapatkan kontradiksi bahwa ada pembagi prima dari n yg lebih besar dari mn. Jadi n

adalah prima.

Dari teorema di atas, faktor – faktor yang diperlukan dalam pengujian n

hanyalah sebatas faktor – faktor yang tergabung dalam m. Sehingga proses perhitungan jauh lebih singkat.

3.2 Perancangan Program 3.2.1 Struktur Program

Gambar 3.1 Struktur Chart

Input yang diperlukan program berupa bilangan. Di mana bilangan ini merupakan bilangan ganjil yang lebih besar dari 2. Hasil / keluaran dari program adalah laporan yang menyatakan bahwa bilangan masukan merupakan bilangan prima atau bukan dengan menyertakan salah satu faktor yang menyatakan bahwa bilangan tersebut bukan bilangan prima.

(5)

Pengujian berdasarkan teorema uji primalitas Pocklington. Tahap pengujian ada 2, yaitu pengujian berdasarkan uji modulo dan pencarian gcd bilangan tersebut dengan bilangan uji.

3.2.2 Tipe Data yang digunakan

Untuk dapat menguji bilangan yang cukup besar diperlukan penampung data (tipe data) yang besar pula. Pada metode yang penulis gunakan, terdapat suatu pengujian berdasarkan rumus gcd(a(n−1)/pi 1,n)=1

n , di mana n sangat menentukan

besar n pi

n

a( −1)/ yang akan ditampung. Nilai n pi

n

a( −1)/ jauh lebih besar dari daya tampung tipe data yang telah tersedia, sehingga hasil perhitungan menjadi tidak akurat. Oleh karena itu diperlukanlah suatu tipe data baru yang dapat menampung hasil perhitungan di atas dan dukungan algoritma – algoritma perhitungan untuk tipe data yang baru tersebut.

Tipe data baru yang akan penulis gunakan adalah tipe data String, di mana tipe data ini dapat menampung bilangan yang sangat besar. Supaya tipe data ini dapat kita gunakan dalam perhitungan, maka diperlukanlah modul – modul untuk mengoperasikan tipe data tersebut. Modul dasar operasinya adalah Modul Penjumlahan, Modul Pengurangan, Modul Perkalian dan Modul Pembagian. Kemudian modul – modul ini digunakan sebagai dasar perhitungan dari fungsi – fungsi / modul – modul yang lain. Modul Penjumlahan dan Modul Pengurangan sama seperti dasar algoritma penjumlahan dan pengurangan bilangan. Modul Perkalian dari bilangan a dan b menggunakan Modul Penjumlahan bilangan a

(6)

Modul Pengurangan b dengan a terus menerus hingga b lebih kecil dari a. Jumlah perulangan dari pengurangan terserbut adalah hasil bagi, dan nilai b terakhir yang lebih kecil dari a merupakan sisa.

3.2.3 Tahap – Tahap yang digunakan 3.2.3.1 Tahap pencarian GCD

Sesuai namanya, modul ini bertujuan untuk mencari gcd dari 2 buah bilangan. Proses perhitungannya berdasarkan teorema – teorema GCD, khususnya algoritma pembagian. Proses pencarian gcd berdasarkan modul pembagian, di mana blangan yang lebih besar dibagi bilangan yang lebih kecil sehingga didapatlah sisa bagi. Kemudian bilangan lebih kecil digunakan dalam proses pembagian oleh sisa tersebut sehingga didapat sisa yang baru. Proses ini berulang terus hingga sisa yang didapat sama dengan nol atau satu, maka didapatlah nilai gcd dari 2 bilangan tersebut.

3.2.3.2Tahap Utama Uji Primalitas

Terdapat 3 tahap pengujian, yaitu tahap pencarian faktor n – 1, dan 2 tahap pengujian.

Tahap pertama dari Modul Uji Primalitas adalah mencari faktor dari n – 1, di mana n adalah bilangan yang diinput / akan diuji. Pemfaktoran n – 1 berdasarkan Teorema Fundamental Aritmetika.dan Metode Eratosthenes, di mana nilai n – 1 diuraikan satu – persatu dimulai dari bilangan prima terkecil, yaitu 2, dengan menggunakan Modul Pembagian sampai dengan n, hingga didapatlah faktor –

(7)

faktor primanya. Kemudian dari faktor – faktor prima tersebut didapatkanlah suatu variabel m dan j, di mana p = m · j, m > n dan ks

s k k p p p m 1 2L 2 1 = . Untuk suatu n = a

/ b, di mana ab, nilai n akan semakin kecil jika nilai b semakin besar. Sehingga untuk memperkecil proses perhitungan, nilai m sebagai pembagi dari (n – 1), sebaiknya diperoleh dari perkalian faktor – faktor prima n – 1 yang terbesar, hingga memenuhi syarat m > n.

Tahap kedua dari Modul Uji Primalitas adalah pengujian dari faktor – faktor

n – 1 terhadap n dengan rumus an 1 1(modn)

i

untuk sebarang basis ai. Basis ai

merupakan bagian dari faktor – faktor pi. Untuk mempermudah pengujian maka sebaiknya kita gunakan basis ai yang relatif kecil, misal ai = 2. Sehingga hasil pemangkatan ai tidak terlalu besar, sehingga proses perhitungan dapat memakan waktu yang lebih cepat. Perhitungan an 1 1(modn)

i

dapat dipermudah dengan

menggunakan Teorema Fermat. Jika an 1 1(modn)

i− ≡ telah terpenuhi maka pengujian

tahap ketiga dapat dilakukan.

Tahap ketiga dari Modul Uji Primalitas adalah pengujian terakhir berdasarkan rumus gcd(a(n−1)/pi 1,n)=1

n . Pengujian ini adalah perhitungan yang

paling sulit untuk dilakukan oleh karena besarnya bilangan yang akan diuji akan sangat besar, yaitu n pi

n

a( −1)/ , sehingga perlu waktu perhitungan yang relatif lama. Jika bilangan masukan telah lulus dari kedua tahap pengujian, maka akan dinyatakan bahwa bilangan tersebut adalah bilangan prima. Sebaliknya jika bilangan terserbut tidak lulus dari salah satu atau kedua tahap pengujian tersebut maka akan dinyatakan bahwa bilangan tersebut bukanlah bilangan prima.

(8)

3.2.4 Diagram Alir Modul

Berikut ini adalah diagram alir dari program aplikasi yang dibuat oleh penulis.

3.2.4.1Diagram Alir Modul Input

Berikut ini adalah diagram alir modul input yang menjelaskan proses validasi input

Input = Bilagan bulat positif ganjil > 2 & Input < 1.000.000 Ya Tidak START END

Gambar 3.2 Gambar Diagram Alir Modul Input

3.2.4.2Diagram Alir Modul GCD

Berikut ini adalah diagram alir modul GCD yang menjelaskan tentang proses pencarian Greatest Common Divisor dari 2 bilangan.

(9)

Gambar 3.3 Gambar Diagram Alir Modul GCD

3.2.4.3Diagram Alir Modul Faktorisasi

Berikut ini adalah diagram alir modul Faktorisasi yang menjelaskan proses faktorisasi suatu bilangan hingga didapat faktor – faktor dari suatu bilangan.

(10)

i <= squareroot(n) + 1 i = 2 n (mod i) = 0 n = n / i Ya i = i + 1 Tidak Ya jumlahfaktor = j Tidak j = 1 faktor[j] = i j = j + 1 jumlahfaktor = j START END

Gambar 3.4 Gambar Diagram Alir Modul Faktorisasi

3.2.4.4Diagram Alir Modul Utama

Berikut ini adalah diagram alir modul pencarian nilai m dari faktor – faktor dari n – 1..

(11)
(12)

Gambar

Gambar 3.2 Gambar Diagram Alir Modul Input
Gambar 3.3 Gambar Diagram Alir Modul GCD
Gambar 3.4 Gambar Diagram Alir Modul Faktorisasi
Gambar 3.5 Gambar Diagram Alir Modul Pencarian nilai  m
+2

Referensi

Dokumen terkait

Dalam perancangan waterpas digital membutuhkan diagram alir alat yang berfungsi untuk mengubah hasil yang masih berupa data yang linier manjadi data yang akan direalisasikan.

Untuk menjelaskan proses dari modul-modul yang kami buat, yaitu untuk builder module dapat dilihat pada Gambar 3.5 s/d Gambar 3.6, sedangkan untuk client modul pada Gambar

Berikut ini gambar activity diagram Admin, dalam Sistem Informasi Pasien Rawat Inap di Rumah Sakit Tk II Putri Hijau Kesdam I/Bukit Barisan,dapat dilihat pada Gambar

Berikut adalah activity diagram data rumah susun yang menggambarkan aktivitas admin pada saat akan mengelola data lokasi rumah susun, seperti pada gambar III.8 berikut :..

Untuk pergantian pahat dapat dilihat pada diagram alir gambar 3.25, pada saat pembacaan G code pahat akan berjalan ke posisi sesuai dengan nilai parameter data X,Z, setelah

Pada perancangan alat dapat dilihat cara kerja alat dibuat sesederhana mungkin dari diagram alir pada gambar dimana hasil umpan balik motor berupa posisi melalui

Berikut ini adalah diagram alir yang digunakan dalam perancangan perangkat lunak simulasi sistem keamanan untuk Mobile WiMax ini :.. Diagram

Sequence Diagram Mencetak Laporan Pada Gambar III.23 menjelaskan skenario admin dalam mencetak laporan yaitu dengan mengklik menu laporan, kemudian memilih laporan yang akan dicetak