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ší.
<!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>