Czy ta liczba jest doskonała? Algorytm sprawdzający liczby doskonałe. Teoria liczb #5
Liczba doskonała jest to liczba naturalna, która jest sumą wszystkich swych dzielników właściwych.
Natomiast dzielnik właściwy dla danej liczby to taki dzielnik, który jest od niej mniejszy.
Kod źródłowy
package pl.am.liczby.doskonale;
public class LiczbyDoskonale {
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 czyDoskonala(long liczba) {
return liczba == sumaDzielnikowWlasciwych(liczba);
}
public static void main(String[] args) {
for (int i = 1; i<1000000; i++) {
if (czyDoskonala(i)) {
System.out.println(i);
}
}
}
}