Endnu en søvnløs nat med php.
jeg har lavet et lille script, som burde vise alle primtal fra 0
og opefter, det gør det også, men det viser også alle de ulige
tal der ikke er primtal.
<?
print ("2<br>");
$primtal = array (2);
for ($pp = 3; $pp <= 1000; $pp = $pp + 2) {
for ($n = 0; $n < count($primtal); $n++) {
if (($pp % $primtal[$n] != 0) AND (count($primtal) == $n + 1))
{
$primtal[] = $pp;
print ("$pp<br>\n");
}
}
}
?>
som det fremgår, har jeg startet med at definere en array, men
tallet 2 i, og derefter sørget for at kun de ulige tal bliver
undersøgt, hvis man ændrer tallet 2 i den første FOR sætning til
1, vil alle tal blive undersøgt, og pudsigt også listet, både på
skærm og i array.
$pp % $primtal[$n] != 0
Denne sætning skulle gerne betyde at $pp "potientielt primtal"
ikke er deleligt med et tal i arrayen og at den derfor skal
udføre handligen i if sætningen. Det gør den også, den gør det
bare hver gang.
(count($primtal) == $n + 1)
Denne linie skal sørge for at $pp bliver testet mod ale talene i
arrayen.
Det er disse to funktioner, om man vil, som tallet 9 fx. ikke
skulle kunne slippe igennem; men det gør det...
Jeg har tjekket det igennem igen og igen, og har ikke været i
stand til at finde nogen fejl. Jeg har også lavet den omvendt,
dvs. istedet for at kun primtal bliver lukket igennem, bliver kun
"ikki" primtal lukket igennem, det var dog uden størrer succes,
og dog kan man se en forskel, men det er vel og mærket en forskel
jeg ikke kan forklare.
<?
print ("2<br>");
$primtal = array (2);
for ($pp = 3; $pp <= 100; $pp = $pp + 1) {
for ($n = 0; $n < count($primtal); $n++) {
if ($pp % $primtal[$n] == 0) {
$n = count($primtal);
}
else {
$primtal[] = $pp;
print ("$pp<br>\n");
}
}
}
?>
håber der er nogen der kan/vil hjælpe...
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! =>
http://www.html.dk/tutorials