• 06-04-2019, 13:47:24
    #1
    Merhaba,

    Java ile mükemmel sayı bulmak için kullancağımız yöntem basittir.
    Mükemmel sayı: Sayının bölenlerinin toplamının sayıya eşit olmasıdır. Eğer bölenlerinin toplamı kendisine eşit ise sayı mükemmeldir.

    Java'da yapmak için kodlar şu;

    package capanornek;
    
    //import java.util.Arrays;
    import javax.swing.JOptionPane;
    //import javax.swing.JScrollPane;
    //import javax.swing.JTextArea;
    
    /**
     *
     * @author Emre ÇAPAN
     */
    public class CapanOrnek{
    
        public static void main(String[] args) {
           int sayi = Integer.parseInt(JOptionPane.showInputDialog("Bir Sayı Giriniz")); // Ekrana mesaj kutusu ile değer alalım
           int toplam=0;
          
            for (int i = 1; i <= sayi/2; i++) { // Döngü 1 den başla, sayının yarısına kadar döngüyü çalıştır
                if (sayi % i ==0) {// Sayının i'inci sayı ile modu 0 ise
                    toplam+=i;//toplam değişkenine i değerini at
                }
            }
            if (sayi==toplam) {// eğer girilen sayı döngüdeki bölümlerin toplamına eşitse
                JOptionPane.showMessageDialog(null, sayi+" Mükemmel Sayıdır");
            }
            else // Değilse
                  JOptionPane.showMessageDialog(null, sayi+" Mükemmel Sayı Değildir");
        }
      
      
    }
    Esenlikle.
  • 06-04-2019, 19:08:55
    #2
    KEO
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Programın zaman karmaşıklığını (time complexity) çok küçük bi değişiklikle O(N)'den O(sqrt(N))'e düşürmek mümkün:

    package capanornek;
    
    //import java.util.Arrays;
    import javax.swing.JOptionPane;
    //import javax.swing.JScrollPane;
    //import javax.swing.JTextArea;
    
    /**
     *
     * @author Emre ÇAPAN
     */
    public class CapanOrnek{
    
        public static void main(String[] args) {
           int sayi = Integer.parseInt(JOptionPane.showInputDialog("Bir Sayı Giriniz")); // Ekrana mesaj kutusu ile değer alalım
           int toplam=0;
          
            for (int i = 1; i * i <= sayi; i++) { // Döngü 1 den başla, sayının köküne kadar döngüyü çalıştır
                if (sayi % i ==0) {// Sayının i'inci sayı ile modu 0 ise
                    toplam+=i;//toplam değişkenine i değerini at
                    if (i * i != sayi)  // i sayının tam kökü değilse sayi / i bölümünü de toplama ekle
                      toplam += sayi / i;
                }
            }
            if (sayi==toplam) {// eğer girilen sayı döngüdeki bölümlerin toplamına eşitse
                JOptionPane.showMessageDialog(null, sayi+" Mükemmel Sayıdır");
            }
            else // Değilse
                  JOptionPane.showMessageDialog(null, sayi+" Mükemmel Sayı Değildir");
        }
     
    }