Advertisement
Teknogezgin

Girilen sayının Smith sayısı olup olmadığını öğrenmek

May 18th, 2014
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.97 KB | None | 0 0
  1. package odev5soru1;
  2. // Mehmet Gündoğdu ve DH'den lne
  3. import java.util.Scanner; // Klavyeden bilgi alalım.
  4.  
  5. public class odev5sorubir {
  6.  
  7.     private static Scanner klavye; // Klavyeden bilgi almak için yazdık.
  8.     public static void main(String[] args) {
  9.         klavye = new Scanner(System.in);
  10.         System.out.println("Smith sayısı olup olmadığını kontrol etmek istediğiniz sayı nedir? Yazıp Enter'layınız."); // Ekrana yazdırdığımız kod.
  11.         int sayi = klavye.nextInt(); // Klavye scanner'ıyla aldığımız veriyi int tipinde sayi değişkenine atadık.
  12.     if (Smith(sayi)) // Sayının rakamları toplamı ile asal çarpanlarının rakamlarının toplamını kontrol ediyor.
  13.     System.out.println(sayi +" sayısı bir Smith sayısıdır.");
  14.     else
  15.         System.out.println(sayi + " sayısı bir Smith sayısı değildir.");
  16.  
  17.     }
  18.  
  19.     public static boolean Smith(int sayi) {
  20.     int gecici = sayi, i; // İşlemleri halledebilmek için geçici sayılar oluşturduk.
  21.     int asal_carpanlar = 0;  // Asal çarpanları 0 dan başlattık.
  22.  
  23.     for (i = 2; gecici > 1; i++) { // İ'yi 1 arttırıp sürekli bölüyoruz.
  24.     if (gecici % i == 0) { // Bölünen sayının i'yle bölümünden kalan 0 ise asal çarpanlar değişkenine eklenir.
  25.     gecici /= i; // İ değişmez gecici değişkeni i'ye bölünür ve bölümden çıkan sonuç gecici değerine atanır.
  26.     asal_carpanlar += i; // asal_carpanlar değişkenine i eklenir.
  27.     i--; // i 1 azaltılır.
  28.     }
  29.     }
  30.    
  31.     return basamak_toplami(asal_carpanlar) == basamak_toplami(sayi); // asal çarpanlar sayi değişkenine eşit olana dek devam eder.
  32.     }
  33.     public static int basamak_toplami(int sayi){ // Rakamların toplamını bulmak için kurulan while döngümüz.
  34.     int toplam = 0;
  35.     while (sayi > 0) { // Döngü sayı 0 dan büyük olduğu sürece sürekli döner.
  36.     toplam += sayi % 10; // Toplam değişkenine sayinin 10 ile bölümünden kalan eklenir.
  37.     sayi /= 10; // sayi değişkeni tekrar 10'a bölünür.
  38.     }
  39.     return toplam;
  40.     }
  41.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement