Dokonalé číslo

Dokonalé číslo je takové přirozené číslo, které má stejnou hodnotu, jako součet všech jeho kladných dělitelů (kromě jeho samého). První dokonalá čísla jsou 6, 28, 496, 8128 a všechna jsou ve tvaru 2^{n-1} \cdot (2^{n} - 1). Řecký matematik Euklides dokázal, že tento vzorec vrátí vždy dokonalé číslo, pokud je 2^{n} - 1 prvočíslo.

Dosud byla nalezena pouze sudá dokonalá čísla, ale existence lichých nebyla doposud vyvrácena. Dle současných poznatků musí být liché dokonalé číslo vyšší než 10^{300}.

Příklady dokonalých čísel

6 = 3 + 2 + 1
28 = 14 + 7 + 4 + 2 + 1
496 = 248 + 124 + 62 + 31 + 16 + 8 + 4 + 2+ 1
8128 = 4064 + 2032 + 1016 + 508 + 254 + 127 + 64 + 32 + 16 + 8 + 4 + 2 + 1

Kód

    /**
     * Zjistuje, jestli je cislo dokonale
     * @param number testovane cislo
     * @return @true pokud je dokonale, @false pokud neni
     */
    public static boolean isPerfect(int number){
        //liche dokonale cislo asi neexistuje a pokud ano, tak je vyssi
        //nez 10^300, coz je jak mimo rozsah int, tak mimo moznosti
        //tohoto algoritmu
        if(number % 2 == 1) return false;
        
        int result = 1; //1 je trivialnim delitelem
        for(int i = 2; i <= number/2; i++){
            if(number % i == 0) result += i;
        }
        return result == number;
    }
/**
 * Overi jestli je cislo dokonale
 * @param $number cislo k overeni
 * @return TRUE / FALSE
 * @author Thomas (www.adamjak.net)
 */

function dokonale_cislo($number){
    if($number % 2 == 1){
        return FALSE;
    }
    
    $result = 1;
    for($i = 2; $i <= $number/2; $i++){
        if($number % $i == 0) {
            $result += $i;
        }
    }
    if ($result == $number) {
        return TRUE;
    }
}

{ zpětná vazba }
Delicious Delicious
Sdílet
Hodnocení (1): 5

Přečtěte si také

Diskuse





Článek zatím nemá žádné komentáře.