Hochzahl berechnen

Vergeudet bestimmt nicht. Als angehender Lehrer kann ich Dir nur sagen, dass Du jetzt weißt, dass auch Rechner nicht alles berechnen können, da Zahlen auch physisch irgendwie gespeichert und verarbeitet werden müssen.
 
Nur so als Ergänzung: Es gibt bcpow(), damit habe ich (hätte, wenn ich es nicht abgebrochen hätte) für alle Iterationen ein Ergebnis (siehe Anhang) bekommen. Aber das ist furchtbar langam (Laufzeit mehrere Minuten oder sogar Stunden - hab dann irgendwann abgebrochen - über PHP-CLI). Möglicherweise lässt es sich durch den Einsatz der GMP-Extension beschleunigen, aber ich habe nicht getestet, ob die Ergebnisse dann noch korrekt bzw. vollständig sind.

PHP:
<?php
ini_set('display_errors', true);
error_reporting(-1);

$fd = fopen('out.txt', "w");

$alter = array();

$personen = "";
$o = 0;

for($i = 1; $i <= 11; $i++){
    do{
        $rand = rand(2,17);
    }while(in_array($rand, $alter));
    $alter[$i] = $rand;
    
    if($i == 11){
        $alter[$i] = $rand;
        $i ++;
        $alter[$i] = $rand;
        
        $o++;
        $zwillinge = "[".$o."par] = ".$alter[$i]."<br />";
    }else {
        if($i >= 10){
            $personen .= "[".$i."] = ".$alter[$i]."<br />";
        }else {
            $personen .= "[0".$i."] = ".$alter[$i]."<br />";
        }
    }
}

$ergebnisse = "";
$n = count($alter);
for($i = 1; $i <= count($alter); $i++){
    if($i == 1){
        $rechnung = $alter[$i];
        $hochzahl = $alter[$i];
    }else {
        $rechnung .="^".$alter[$i];
        $hochzahl = bcpow($hochzahl, $alter[$i]);   
    }
    
    $out = "";
    if($i >= 10){
        $out = "[".$i."] ".$rechnung." = ".$hochzahl."<br />";
    }else{
        $out = "[0".$i."] ".$rechnung." = ".$hochzahl."<br />";
    }
    fprintf($fd, "%s\n%s\n\n", var_export($rechnung, true), $out);
    $ergebnisse .= $out;
}
fclose($fd);
$wurzel = bcpow($hochzahl, (1/12));
?>

Und eine Anmerkung bezg. Limits von PHP-Int-Werten. Auf 32-Bit-Systemen oder mit der 32-Bit-Version von PHP ist PHP_INT_MAX 2^32-1, auf Windows ist es sogar mit der 64-Bit-Variante von PHP (hier Windows 7 amd64, PHP Architecture => x64) nur int(2147483647). Hab grad kein 64-Bit Linux parat, um dass auch noch zu testen.

Fazit: PHP eignet sich nur sehr begrenzt für das Berechnen solch hoher Werte. Möglich ist es aber schon.
 

Anhänge

Zurück