Liczby doskonałe

Liczba doskonała to liczba naturalna, która jest sumą wszystkich swych dzielników właściwych (np. liczba 6, gdyż 6=1+2+3). Chcemy napisać program, który znajdzie nam trzy pierwsze liczby doskonałe.
/**
 * 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ą.


0 Komentarzy - Liczby doskonałe

Prześlij komentarz

Możesz użyć niektórych tagów HTML, takich jak <b>, <i>, <u>, <a> Nie spamuj :)

Popularne posty