[]

Girilen sayının asal olup olmadığını anlayacak java kodu

bunu nasıl bir kodla yapabilirim?

"while" düşündüm, "for" düşündüm ama işin içinden çıkamadım.


 
while ya da for farketmez,
while ile yapacksanız bir sayaç koyun, o sayacın değerini her döngüde 1 arttırın ve sayıyı sayaca bölün, eğer bölüm her hangi bi değerde sıfır çıkarsa sayı asal değildir, çünkü kendinden ve birden başka bir sayıya bölünebilmektedir.

koşul da sayac<sayi olmalı.
  • eksi sozlukte eksiyen adam  (13.07.13 23:55:28 ~ 23:57:48) 
yazdığın sayıya kadar olan sayıları o sayıya böler, kalanlı çıkmazsa ya da virgülsüz bir tam sayı elde edersen orda keser, asal olmadığı sonucu çıkar. yani 94232 yazdın, 1 den 94232 ye kadar bölme yapar gibi. ben zamanında böyle yazmıştım.


  • sehpa fx350  (14.07.13 00:03:09) 
evet while ile aynen böyle yaptım ama mesela diyelim ki sayaca bölündü sayı, döngüyü nasıl durduracağız?

sayıyı girdikten sonra programın sayının asal olup olmadığını söylemesini istiyorum.

onlarca bu sayı asal değildir yazısı çıkıyor yaptığım döngüde.
  • king lizard  (14.07.13 00:03:54) 
sehpa fx350'nin verdiği örnek üzerinden devam ediyorum, önce 94232'nin kökünü al ve 1 den köke kadar bölme yaptır, kökten sonrası tekrara girer, gereksiz iş yükü.


  • cevher67  (14.07.13 00:11:02) 
köke kadar saydırmaya ek olarak çift sayıları otomatik atlayabilirsin. while kullanırken 2şer 2şer atlayarak. aslında 3'ün katlarını 5'in katlarını felan da otomatik bakılmadan atlayabilirsin ama kod iyice karmaşıklacaktır. çift sayıları ayıkla ama iyi hız sağlar.

döngüyü nasıl durduracağız diyorsun bide, bana kalırsa asal bakan method'un orada direkt olarak return değeri döndürebilir. Yani onu bir fonksiyon yada bir method olarak yapıp if (a%sayac == 0) return false yapman mantıklı. break tarzı şeyler de yapabilirsin ama tasvip etmem.
  • zamazengo  (14.07.13 00:47:13) 
Fermat'ın asallık testi var. Bildiğim en hızlısı o.


  • alperz  (14.07.13 01:05:00) 
şöyle bir şey yaptım:

public void run() {
println("This program checks if a number is prime or not.");
int n = readInt("n? ");
int i = 2;
int prime = 0;
if (n<2) {
println(n+" is not prime.");
} else {
while(i<n) {
if (n%i==0) prime = 1;
i += 1;
}
if (prime == 1) {
println(n+" is not prime.");
} else {
println(n+" is prime.");
}

}

}

sanırım çalışıyor. teşekkür ederim.
  • king lizard  (14.07.13 03:00:51) 
  • nuisance  (14.07.13 05:24:05) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.