Asal sayılarla ilgili şöyle bir örnek verebiliriz. "17 ile 19 sayısının çarpımı nedir?" diye bir soru sormuş olsak cevabı kısa sürede "323" olarak bulabiliriz, peki "323 sayısının bölenleri nelerdir?" dersek. İşte bu noktada sayıyı analiz etmemiz gerekecektir.
Sırayla; 2'ye, 3'e, 4'e, 5'e vs.. bölününebiliyor mu diye denemeler yapacağız. Yani; bölme işlemi, çarpma işleminden daha fazla zaman almaktadır. İşte bu noktada şifreleme sistemlerinin bir kısmında "bölme işlemi" ve de "asal bölenler" devreye girmektedir.
Şimdi ise gelelim "Asal Sayı" kavramına. Tanım olarak "1 ve kendisinden başka böleni yoktur" şeklinde kısa bir tanımlama yapmıştık. Örnekler vermeye çalışalım. "2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37..." şeklinde herhangi bir dizilim kuralı olmayan sayılar topluluğudur.
Örnek: 17 sayısı "1" ve "17" harici pozitif bir tamsayıya bölünememektedir.
Bir başka örnek ise 77 sayısının asal olup olmadığını bilmediğimizi varsayalım. Bu sayıyı sırasıyla asal bölenlere bölme yoluna gidelim.
2'ye tam olarak bölünemiyor. 3'e tam olarak bölünemiyor. 5'e tam olarak bölünemiyor. 7'ye tam olarak bölünmektedir.
Burada bakmamız gereken hususlardan birisi, bölünecek sayının karekök değerine kadar olan sayıları teker teker sayının böleni olup olmadığına bakmaktır. Sayının tamamına kadar ilerlemeyi önlemiş olduk.
Şimdi ise bu hesaplamayı JavaScript üzerinde programlayarak bir sistematiğe oturtmuş olacağız.
JavaScript
function fnHesapla() { var intSayi = document.getElementById("sayi").value; if (intSayi.length < 1 || isNaN(intSayi)) { alert("Lütfen sayısal bir değer giriniz!"); } else { if (intSayi < 3) { alert("Lütfen 3'ten büyük bir sayı giriniz!"); } else { if (intSayi % 2 == '0') { alert("Girdiğiniz sayı çift bir sayıdır.\nLütfen tek bir tamsayı giriniz!"); } else { var intSon_Sayi = Math.floor(Math.sqrt(intSayi)); intSon_Sayi = intSon_Sayi + 1; var intTam_Bolen_Sayisi = 0; for (i = 3; i <= intSon_Sayi; i++) { var realBolum = intSayi / i; if (realBolum.toString().indexOf(".") == -1) { intTam_Bolen_Sayisi = intTam_Bolen_Sayisi + 1; break; } } if (intTam_Bolen_Sayisi == 0) { strYazi = '<strong>' + intSayi + '</strong> sayısı asaldır.'; } else { strYazi = '<strong>' + intSayi + '</strong> sayısı asal değildir.'; strYazi = strYazi + '<br />'; strYazi = strYazi + 'Bu sayı <strong>' + i + '</strong> sayısına tam bölünmektedir.'; } document.getElementById("sonuc").innerHTML = strYazi; } } } }Şimdi ise HTML betiklerini hazırlayalım.
HTML
<input type="text" id="sayi" /> <button onclick="javascript: return fnHesapla();">Asal mı?</button> <span id="sonuc"></span>