Zdrojový kód skriptu Prvočísla 2.0

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html>
  <head>
    <title>Prvočísla 2.0</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
    <meta name="author" content="Ondřej Staněk: ostan at gmail.com" />
  </head>
  <body>
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * Tento kód vytvořil Ondřej Staněk (http://www.ostan.tk, resp. www.gvp.cz/~ostan) *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 */
$max $_GET['max'];
class 
stopky // trida stopky měří, za jak dlouho se kód zpracuje
  
var $start;
  function 
getmicrotime () {
     list(
$usec$sec) = explode(" ",microtime());
     return ((float)
$usec + (float)$sec);
  }
  function 
stopky () {
    
$this->start $this->getmicrotime();
  }
  function 
stop () {
    return 
$this->getmicrotime() - $this->start
  }
}

class 
prvocisla {
  
// nadefinovani prvniho prvocisla (slouzi k vypoctu ostatnich)
  
var $prvocisla = array(2);
  var 
$max;
  
// zjistuje, zda je cislo delitelne
  
function JeDelitelne ($delenec$delitel) {
    return (
$delenec $delitel == 0) ? TRUE FALSE;
  }
  
  
// zjistuje, zda je predhozene cislo prvocislem  
  
function JePrvocislo ($cislo) {
    
$JePrvocislo TRUE;
    
// projde cele pole a zkusi cislo delit prvocislama v tabulce 
    
foreach ($this->prvocisla as $id => $prvocislo) {
      if (
$this->JeDelitelne($cislo$prvocislo)) {
        
$JePrvocislo FALSE;
        break; 
// Jestlize je delitelne, vyskoc ze smycky
      
}
      if (
$prvocislo $prvocislo >= $cislo) { break; } // pokud je druha mocnina prvocisla vetsi nez cislo, uz nepokracuj
                                                        //tento radek vyrazne zrychluje skript (asi 15x)
    
}
    return 
$JePrvocislo// odpovez, jestli je to prvocislo
  
}
  
  function 
prvocisla ($max) {
    
$this->max=$max;
    for (
$cislo=3$cislo <= $max$cislo++) { // zkousi kazde cele cislo v intervalu <3, $max>
      
if ($this->JePrvocislo($cislo)) {
        
$this->prvocisla[] = $cislo// pokud to je prvocislo, pridej ho do tabulky
      
}
    }
  }
  
  function 
ArrayPrvocisla () {
    return 
$this->prvocisla// vrati obsah pole $this->prvocisla
  
}
}

// trida, ktera resi vystup programu
class output {
  function 
output ($pole) {
    
    echo 
"<table border=\"1\">\n";
  
    
$sloupcu ceil (bcsqrt (count($pole), 1)); // pocet sloupcu v tabulce; vypocti tak, aby byl ctverec
    
$n 0;
    for (
$radek 0$radek $sloupcu$radek++) {
      echo 
"<tr>";
      for (
$sloupec 0$sloupec $sloupcu$sloupec++) {
        echo 
"<td>"$pole[$n] ."</td>";
        
$n++;
      }
      echo 
"</tr>\n";
    }
    echo 
"</table>\n";
  }


if (empty(
$max)) { $max=1000; }
$stopky = new stopky;
$prvocisla = new prvocisla($max);
new 
output($prvocisla->ArrayPrvocisla());
echo 
"<p>Nalezeno "count($prvocisla->prvocisla) ." prvočísel ";
echo 
"z čísel od 2 do "$prvocisla->max;
echo 
"<br>Stránka se generovala "$stopky->stop() ." vteřiny</p>\n";
?>
        <hr />
        <p><a href="zdrojak.php">Zobrazit zdrojový kód</a></p>
    </body>
</html>