Soru & Cevap

Lynch-Bell sayılarını bulan program ...

09.05.2020 - 04:19

tüm basamakları kendisine tam bölünebilen sayılara Lynech-Bell sayıları denir.Beş basamaklı"100000-99999"arasındaki Lynch-Bell sayılarını bulan programı  yazmamda yardımcı olurmusunuz?

Örneğin:

1236= bu sayı kendisini oluşturan 1,2,3,6 sayılarına tam bölünür ve Lynch-Bell sayı denir

206 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user
Konuk (doğrulanmamış)
12.05.2020 - 08:33
Java ya kodu yazdığımda hata veriyor yardımcı olabilir misiniz
picture-285937-1606688513.png
01burkatan01
09.05.2020 - 07:46

Gürkan Bey,

Arkadaşın tanımında bütün rakamların farklı olması ve içerisinde 0 olmaması koşulu yok bir daha okursanız.

Fazla vaktim yok attığınız siteyi incelemedim ama. Sanırsam oradaki doğru lynchbell tanımı. Ama arkadaş onu sormamış.

Yazdığım kod arkadaşın tanımına uygundur.

Eğer ona uygun istiyorsanız yapmanız gereken işlem basit. boolean fonksiyonunun içerisinde benim kontrolden önce sayının 0 içerip içermediğini ve bütün elemanlarının farklı olup olmadığını da kontrol ettirirseniz işlem tamam olur. Bu tanıma uygun yazmakta zorlandıysanız onu da ekleyip atabilirim.

Fatma
09.05.2020 - 09:24
Sıfır olmaması için nasıl eklemem gerekiyor.
Burak Kaan Tanrıverdi
09.05.2020 - 10:20
Metodun en başına : if(sayiStr.contains("0")){ return false;} yaparsanız 0 almaz. Döngünün içerisinden 0 kontrolünü de kaldırababilirsiniz.
picture-285937-1606688513.png
01burkatan01
09.05.2020 - 06:24
package com.company;

public class Main {

    public static void main(String[] args) {

        for (int i = 9999; i < 100000; i++) {
            if (lynchbell(i)) {
                System.out.println(i);
            }
        }

    }


    public static boolean lynchbell(int sayi) {

        String sayiStr = String.valueOf(sayi);
        for (int i = 0; i < sayiStr.length(); i++) {  // sayının bütün rakamlarına bölen metod
            if (sayiStr.charAt(i) != '0') { // ArithmeticException önlemi
                if (sayi % Integer.parseInt(String.valueOf(sayiStr.charAt(i))) != 0) {  // eğer o anki rakama bölümü 0 değilse lynchbell değil
                    return false;
                }
            }
        }

        return true;

    }

}

 

Sayının rakamlarını tek tek almak için sayıyı stringe çevirmek yerine sayıyı başka bir kayıt değişkenine alıp her seferinde 10 a bölerek son basamağına bölerek te yapabilirsin.

O da güzel bir yöntem. Onu da deneyebilirsin.

Fatma
09.05.2020 - 08:55
Teşekkür ederim.