Liczby zaprzyjaźnione. Teoria liczb #7

package pl.am.liczby.zaprzyjaznione;

public class LiczbyZaprzyjaznione {

    public static int sumaDzielnikowWlasciwych(long liczba) {
        if (liczba == 1) {
            return 0;
        }
        int suma = 1;
        double max = Math.sqrt(liczba);
        for (long i=2; i<=max; i++) {
            if (liczba%i == 0) {
                long wynikDzielenia = liczba/i;
                if (i == wynikDzielenia) {
                    suma += wynikDzielenia;
                } else {
                    suma += wynikDzielenia;
                    suma += i;
                }
            }
        }

        return suma;
    }

    public static boolean czyZaprzyjaznione(long a, long b) {
        return a == sumaDzielnikowWlasciwych(b) && b == sumaDzielnikowWlasciwych(a);
    }


    public static void main(String[] args) {

        //System.out.println(czyZaprzyjaznione(123, 321));
        //System.out.println(czyZaprzyjaznione(220, 284));

        for (int a = 2; a<=1000000; a++) {
            int b = sumaDzielnikowWlasciwych(a);

            if (a != b && a == sumaDzielnikowWlasciwych(b)) {
                System.out.println(a + ", " + b);
            }
        }

    }
}

3 komentarze do “Liczby zaprzyjaźnione. Teoria liczb #7

  • 19 marca 2021 o 23:25
    Permalink

    Cześć mam pytanie, szukałem informacji w sieci nigdzie nie mogłem znaleźć satysfakcjonującej mnie odpowiedzi.
    Zachęciłeś mnie do nauki javy, więc pomyślałem że przyjdę z problemem do Ciebie 🙂
    Mianowicie
    Czy w javie można wyczyścić ekran konsoli właściwie to w InteliJ potrzebuję aby pętlą wyświetlała randomową macierz i czyściła ekran.
    Proszę o odpowiedź dla początkującego 🙂
    P.S super filmy czekam na więcej :)))

    Odpowiedz
    • 29 marca 2021 o 14:37
      Permalink

      I tak i nie 😉
      Jeśli odpalasz swoje programy w inteliJ to takiej możliwości nie ma lub obejście jest trudne. Czyszczenie konsoli działa jednak gdy program odpalimy bezpośrednio w jakimś terminalu.
      Jest na to zgłoszenie, jest więc szansa że programiści rozwijający inteliJ kiedyś ulepszą działanie swojej konsoli.
      To zgłoszenie: https://youtrack.jetbrains.com/issue/CPP-822 ma już kilka lat, więc nie sądzę aby było jakimś priorytetem 😉

      Odpowiedz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *