Zdrojové kódy ke skriptům Prvočísla:

Jako pro každý program, i pro tyto dva skripty platí:
a) V každém programu je alespoň jedna chyba.
b) Každý program, který má víc jak jeden řádek lze napsat alespoň o řádek kratší.

// celý program si můžete stáhnout zde (archiv RAR)
// máte-li nějakou připomínku ke kódu, napište mi vzkaz do knihy návštěv, nebo na ostan@email.cz
// pro zvětšení textu vyberte [Zobrazit] => [Velikost textu] => [Velké] (v IE)
1. soubor prvocisla.php - generuje tabulku
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PRVOÈÍSLA 1.1 - OStan</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Content-language" content="cs">
<meta name="author" content="Ondøej Stanìk">
<link href="style.css" rel="stylesheet" type="text/css">
<SCRIPT type="text/javascript">
function openWindow(url, jmeno) {
window.open(''+url+'', ''+jmeno+'', 'toolbar=0,menubar=0,location=0,directories=0,status=0,scrollbars=1,resizable=1,copyhistory=1,width=250,height=250');
}
</SCRIPT>
</head>
<BODY>
<?
if(!$jenom_prvcis) {$jenom_prvcis = False; } // jenom prvocisla
if(!$pocet_cisel) {$pocet_cisel = 100; } // pocet cisel


$prvocisla[1] = 2; // prvni prvocislo, slouzi k vypoctu dalsich.

// do pole $prvocisla[] ulozi prvocisla pro pozdejsi pouziti
for($akt_cis = 1; $akt_cis <= $pocet_cisel; $akt_cis++){
  for ( $w = 1; $w <= count($prvocisla) and $akt_cis % $prvocisla[$w] != 0 and $akt_cis != 1; $w++ ){
    if($w == count($prvocisla)) {
      $prvocisla[] = $akt_cis;
      $w++;
    }
  }    
}

// vypocti rozmery tabulky
if($jenom_prvcis) {
  $pocet_cisel = count($prvocisla); 
}

$sloupcu = ceil (bcsqrt ($pocet_cisel, 1)); // pocet sloupcu v tabulce; vypocti tak, aby byl ctverec
$akt_cis = 1;

echo "<table>";

while ( $akt_cis <= $pocet_cisel ) {
  
  echo "<tr>";

  for ( $n=1; $n <= $sloupcu; $n++ ) {
    
    if ( $akt_cis <= $pocet_cisel ) { 
  	  if($jenom_prvcis){
  	    echo "<td class=\"prvocislo\" onClick=\"openWindow('cislo.php?cislo=$prvocisla[$akt_cis]', '$prvocisla[$akt_cis]')\">";
		    echo $prvocisla[$akt_cis]; 
		    echo "</td>";
		  } else {
        if( in_array($akt_cis, $prvocisla)) {
  	  	  echo "<td class=\"prvocislo\" onClick=\"openWindow('cislo.php?cislo=$akt_cis', '$akt_cis')\">";
  		    echo $akt_cis; 
  		    echo "</td>";
  		  } else {
  		    echo "<td class=\"cislo\" onClick=\"openWindow('cislo.php?cislo=$akt_cis', '$akt_cis')\">";
  		    echo $akt_cis; 
  		    echo "</td>";
  		  }
	    }
      $akt_cis++; // cislo se navysi o jedna
    } 
  }
  
  echo "</tr>";
}
echo "</table>";
?>
</BODY>

2. soubor cislo.php - počítá dělitele čísel předaných předchozým skriptem.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PRVOÈÍSLA 1.1; detail èísla - OStan</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Content-language" content="cs">
<meta name="author" content="Ondøej Stanìk">
<link href="style.css" rel="stylesheet" type="text/css">
<SCRIPT type="text/javascript">
function openWindow(url, jmeno) {
window.open(''+url+'', ''+jmeno+'', 'toolbar=0,menubar=0,location=0,directories=0,status=0,scrollbars=1,resizable=1,copyhistory=1,width=250,height=250');
}
</SCRIPT>
</head>
<BODY>

<?
if(!$cislo) { die("<h1>Nebylo zadáno žádné èíslo!<h1>"); } // pokud neni $cislo, chcipni
$prvocisla[1] = 2; // prvni prvocislo, slouzi k vypoctu dalsich.

// -- do pole $prvocisla[] ulozi prvocisla pro pozdejsi pouziti
for($akt_cis = 1; $akt_cis <= $cislo; $akt_cis++){
  // opakuj smycku dokud: cislo neni delitelne prvocilsem
  for ( $w = 1; $w <= count($prvocisla) and $akt_cis % $prvocisla[$w] != 0 and $akt_cis != 1; $w++ ){
    // pokud si na konci smycky, uloz nove prvocislo do tabulky
    if($w == count($prvocisla)) {
      $prvocisla[] = $akt_cis;
      $w++;
    }
  }    
}


?>
<table border="0" cellspacing="0" cellpadding="0" style="float: left;">
  <tr>
    <td class="<?
if( in_array($cislo, $prvocisla)) {
  echo "prvocislo";
} else {
  echo "cislo";
}
?>" style="font-size: 20; height: 60; width: 60; cursor: auto"><? echo $cislo; ?></td>
  </tr>
</table>
<?
// popis cisla
if( in_array($cislo, $prvocisla)) {
  echo "<font size=\"5\" face=\"arial\"><b>Èíslo $cislo je prvoèíslo.</b><br><br></font>";
  exit;
} else {
  if($cislo==1){
    echo "<font size=\"5\" face=\"arial\"><b>Èíslo jedna nemá dìlitele.</b><br><br></font>";
  } else {
    echo "<font size=\"5\" face=\"arial\"><b>Èíslo $cislo má tyto dìlitele:</b><br><br></font>";
  }
}
// -- zjisti vsechny delitele a uloz je do pole $delitele[]
for($w = 2; $w * 2 <= $cislo; $w++) { //divite se, proc $w a ne $n? Jen tak.
  if( $cislo % $w == 0 ) { //pokud je cislo delitelne $w
    $delitele[] = $w; //pridej ho do pole delitele[]
  }
}


// -- vypocti rozmery tabulky
if($jenom_prvcis) {
  $pocet_cisel = count($del_prvcis); 
} else {
  $pocet_cisel = count($delitele);
}
$sloupcu = ceil (bcsqrt ($pocet_cisel, 1)); // pocet sloupcu v tabulce; vypocti tak, aby byl ctverec
$akt_cis = 1;

// -- a nakonec vypis cisla do tabulky
echo "<table>";

while ( $akt_cis <= $pocet_cisel ) {
  
  echo "<tr>";

  for ( $n=1; $n <= $sloupcu; $n++ ) {
    
    if ( $akt_cis <= $pocet_cisel ) { 
      if( in_array($delitele[$akt_cis-1], $prvocisla)) {
  	    echo "<td class=\"prvocislo\" onClick=\"openWindow('cislo.php?cislo=" . $delitele[$akt_cis-1] . "', '" . $delitele[$akt_cis-1] . "')\">";
  	    echo $delitele[$akt_cis-1]; 
  	    echo "</td>";
  	  } else {
  	    echo "<td class=\"cislo\" onClick=\"openWindow('cislo.php?cislo=" . $delitele[$akt_cis-1] . "', '" . $delitele[$akt_cis-1] . "')\">";
  	    echo $delitele[$akt_cis-1]; 
  	    echo "</td>";
  	  }
      $akt_cis++; // cislo se navysi o jedna
    } 
  }
  
  echo "</tr>";
}
echo "</table>";

?>
</body>