Mehmet Ethem SULAN :: Java Recursive Methods :: How to find prime number total using recursion in java(1 den n e kadar olan asal sayıların toplamını recursive olarak bulan java kodu)
package ethemsulan.com;
public class AsalsayiTopla {

	public static int asalTopla(int n)
	{
//metod kendi kendini cagirdiginda kontrol=0 yap
		int kontrol = 0;
		if(n<1){
			return 0;
		}
//Asal sayi sadece kendisine ve 1 tam bolunebilen sayilardir.
//Sayinin yarisi kadar kontrol ediyor.Bu aralikta sadece 1 e bolunmesi gerekir
//Eger sayi kendisinin yarisina kadar kontrol edip sadece 1 e bolunuyorsa o zaman
//kontrolu 1 arttiriyorum. n/2 dikkat.yarisina kadar kontrol etme yeterli
		for(int i=1;i<=n/2;i++){
			if(n%i==0){
				kontrol++;
			}
		}
//kontrol==1 ise sayimiz asaldir.Asal ise n+metod(bir sonraki sayi)
		if(kontrol==1){
			System.out.println("Asal sayi:"+n);
			return n+asalTopla(n-1);
		}
//Sart saglamiyorsa yani asal degilse bir sonraki sayiyi cagir
		return asalTopla(n-1);
	}
	public static void main(String[] args) {
		System.out.println(1+" den "+30+" kadar olan asal sayilarin toplami-->"+AsalsayiTopla.asalTopla(30));
	}
}

orjinal kod

Comments

There are 2 comments for this post.

  1. ibrahim H yakut on Temmuz 21, 2010 4:11 pm

    yazdığınız kod rekürsif metodlar için güzel bir örnek ancak program sadece 120 ve altındaki aralıkta düzgün çalışır 121 den itibaren 7 nin üstündeki bütün asal sayı karelerinde(11*11,13*13 vs) ve bu asal sayı çarpımlarında (11*13,13*17 gibi) asal olmayan sayılarıda toplama ilave eder. örneğin 11*11=121 sayısının yazdığınız kod 2,3,5 ve 7 ye bölünmediği için asal kabul edecektir ancak 121 11’e tam bölünür.

  2. ethemsulan on Temmuz 21, 2010 10:45 pm

    Haklısınız 120 den sonraki asal sayıları bulamıyor. Aslında daha anlaşılır olsun diye sınırlama yapmıştım.Dikkat ettiyseniz 13 e kadar test etmiştim. Kısaca recursive mantığını örnekle açıklamaya çalışmıştım.Düzelttim şu an tam çalışıyor.

Write a Comment

Let me know what you think?