/**
* Liczby doskonałe
* @author kodatnik.blogspot.com
*/
public class LiczbyDoskonale {
public static void main(String[] args) {
// deklaracja i inicjalizacja zmiennych
// ile liczb doskonałych znaleziono
int znaleziono = 0;
// liczba początkowa
int liczba = 1;
// pętla while (działa dopóki nie znajdzie 3 liczb doskonałych)
while( znaleziono < 3 ) {
// zmienna przechowująca sumę dzielników
int sumaDzielnikow = 0;
// pętla licząca sumę dzielników danej liczby
for( int i = 1; i < liczba; i++) {
if ((liczba % i) == 0)
sumaDzielnikow += i;
}
// sprawdzamy czy suma dzielników jest równa danej liczbie
if( sumaDzielnikow == liczba) {
// jesli tak wyświetlamy ją na ekranie
System.out.println("Liczba doskonała: " + liczba);
// zwiększamy ilość znalezionych liczb
znaleziono++;
}
// bierzemy kolejną liczbę
liczba++;
}
}
}
Uruchomienie programu:
Liczba doskonała: 6 Liczba doskonała: 28 Liczba doskonała: 496
Algorytm możemy uprościć zmniejszając zakres pętli liczącej sumę dzielników (wystarczy sprawdzać liczby z zakresu od 1 do liczba/2). Dodatkowo możemy wykorzystać własność odkrytą przez Euklidesa: każda liczba doskonała jest liczbą parzystą.
1 Komentarz - Liczby doskonałe
teraz doskonale wiem
Prześlij komentarz
Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)