Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package odev5soru1;
- // Mehmet Gündoğdu ve DH'den lne
- import java.util.Scanner; // Klavyeden bilgi alalım.
- public class odev5sorubir {
- private static Scanner klavye; // Klavyeden bilgi almak için yazdık.
- public static void main(String[] args) {
- klavye = new Scanner(System.in);
- 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.
- int sayi = klavye.nextInt(); // Klavye scanner'ıyla aldığımız veriyi int tipinde sayi değişkenine atadık.
- if (Smith(sayi)) // Sayının rakamları toplamı ile asal çarpanlarının rakamlarının toplamını kontrol ediyor.
- System.out.println(sayi +" sayısı bir Smith sayısıdır.");
- else
- System.out.println(sayi + " sayısı bir Smith sayısı değildir.");
- }
- public static boolean Smith(int sayi) {
- int gecici = sayi, i; // İşlemleri halledebilmek için geçici sayılar oluşturduk.
- int asal_carpanlar = 0; // Asal çarpanları 0 dan başlattık.
- for (i = 2; gecici > 1; i++) { // İ'yi 1 arttırıp sürekli bölüyoruz.
- 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.
- 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.
- asal_carpanlar += i; // asal_carpanlar değişkenine i eklenir.
- i--; // i 1 azaltılır.
- }
- }
- return basamak_toplami(asal_carpanlar) == basamak_toplami(sayi); // asal çarpanlar sayi değişkenine eşit olana dek devam eder.
- }
- public static int basamak_toplami(int sayi){ // Rakamların toplamını bulmak için kurulan while döngümüz.
- int toplam = 0;
- while (sayi > 0) { // Döngü sayı 0 dan büyük olduğu sürece sürekli döner.
- toplam += sayi % 10; // Toplam değişkenine sayinin 10 ile bölümünden kalan eklenir.
- sayi /= 10; // sayi değişkeni tekrar 10'a bölünür.
- }
- return toplam;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement