/** * 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 :)