Javascript İle Asal Sayı İşlemleri
-
JavaScript ile bir sayının asal olup olmadığını kontrol ediyoruz.
Matematik ve çeşitli dalların (Şifreleme) gizemli konusudur "Asal Sayılar". Tanım olarak "1 ve kendisinden başka böleni yoktur" kısaca bir şeyler söyleyebiliriz.
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.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.
<input type="text" id="sayi" /> <button onclick="javascript: return fnHesapla();">Asal mı?</button> <span id="sonuc"></span>
Kaynak: JavaScript ile Asal Sayı İşlemleri
-
Abi konu dışı ama
Örneğin 1 den 100 e kadar olan sayların toplamını bulan programı yazın desek.
%90 şu cevabı verir..
for(var i = 1;i<=10;i++) { Toplam+=i; }Ama neden şu yöntemi kimse kullanmaz.
Toplam=(10.0*(10.0+1.0))/2;
Aradaki farka bakılınca pek bi hız farkı yok ama işlem uzayınca böyle oluyor.
Yapmış olduğun işe kesinlikle laf etmiyom biliyosun beni :D Sadece merak ettim Asal Sayı bulma mantığın da aynı da
-
Muhammed, aslında toplamı benim yazdığım betiklerde bulmak zor. Çünkü ilk bulduğu bölende hemen döngüyü durduruyor. Dolayısıyla belirli bir noktaya kadar olan toplamlar ortaya çıkar.
Yada ben bu saatler de kafam çok fazla çalışmadığı için dediklerini anlayamadım :).
Verdiğin yönteme bakmak gerek. Bir dizinin vs.. tam olarak asalları verdiğini hatırlamıyorum.
-
Bir sayının asal olup olmama teoremine ve ispatına bakmak gerekiyor ben bilmiyorum da. Bu kadar uzatmaya gerek yok gibi düşünüyorum :(
-
Bir sayının asal olup olmama teoremine ve ispatına bakmak gerekiyor ben bilmiyorum da. Bu kadar uzatmaya gerek yok gibi düşünüyorum :(
-
MhmdAlmz bunu yazdı
Abi konu dışı ama
Örneğin 1 den 100 e kadar olan sayların toplamını bulan programı yazın desek.
%90 şu cevabı verir..
for(var i = 1;i<=10;i++) { Toplam+=i; }Ama neden şu yöntemi kimse kullanmaz.
Toplam=(10.0*(10.0+1.0))/2;
Aradaki farka bakılınca pek bi hız farkı yok ama işlem uzayınca böyle oluyor.
Yapmış olduğun işe kesinlikle laf etmiyom biliyosun beni :D Sadece merak ettim Asal Sayı bulma mantığın da aynı da
Hocam zaten cevabın 55 çıkıyor işlem hatası yapmışsın.
Diğer bir mantıkla o zaman direk cevabı yazalım :)
Formülü uygulamak güzel bir yöntem olurdu. İlk terim son terim şeklinde fakat asal sayılarda formülümüz de yok maalesef. Bu yüzden gizemli zaten
Edit: 1den 100e kadar deyip 1den 10a kadar yapmışsın :)
by_Tet tarafından 28/Eyl/16 03:36 tarihinde düzenlenmiştir -
by_Tet bunu yazdıMhmdAlmz bunu yazdı
Abi konu dışı ama
Örneğin 1 den 100 e kadar olan sayların toplamını bulan programı yazın desek.
%90 şu cevabı verir..
for(var i = 1;i<=10;i++) { Toplam+=i; }Ama neden şu yöntemi kimse kullanmaz.
Toplam=(10.0*(10.0+1.0))/2;
Aradaki farka bakılınca pek bi hız farkı yok ama işlem uzayınca böyle oluyor.
Yapmış olduğun işe kesinlikle laf etmiyom biliyosun beni :D Sadece merak ettim Asal Sayı bulma mantığın da aynı da
Hocam zaten cevabın 55 çıkıyor işlem hatası yapmışsın.
Diğer bir mantıkla o zaman direk cevabı yazalım :)
Formülü uygulamak güzel bir yöntem olurdu. İlk terim son terim şeklinde fakat asal sayılarda formülümüz de yok maalesef. Bu yüzden gizemli zaten
Edit: 1den 100e kadar deyip 1den 10a kadar yapmışsın :)
Yapma hocam :( ona mı takıldın vesselam :D ek olarak vardır elbet bir yöntemi bakmak lazım :D
asal sayı kontrolü javascript ile asal sayı kontrolü hangi sayılar asal sayıdır
