Citat:
Ursprungligen postat av
Sugminstorasalta
Du kan ju inte returnera true innan du är klar med loopen, eller hur?
Hmm men om $number är till exempel 23, så kontrolleras först om $number är mindre än 2, vilket det inte är så då körs nästa if-sats där programmet kontrollerar om $number är 2 vilket det heller inte är, och sedan kontrolleras huruvida det är ett jämnt tal i den tredje if-satsen vilket också returnerar false. Sedan påbörjas en for-loop där iteratorn börjar på 3 och villkoret är att iteratorn inte får överskrida kvadratroten ur $number, om detta condition stämmer så inkrementeras iteratorn med 1.
Om $number är 23 så kommer loopen itereras två gånger, först när $i är 3 och sedan ytterligare en gång när $i är 4. Både ($number % 3) samt ($number % 4) !== 0, vilket leder till att min else körs och returnerar true, vilket ju är helt korrekt.
Det kan hända att jag har fel, jag är själv lite osäker så du får gärna rätta mig
Däremot måste jag på något sätt signalera att talet är ett primtal om if-satsen i for-loopen inte returnerar false för några iterations, då false för samtliga iterations = inga faktorer = $number !== primtal, och detta var också anledningen till att jag i början av tråden pushade in de itererade värdena i en array då detta fick agera boolean-värde d.v.s. om array:en är tom = inga itererade värden har pushats in = $number har inga faktorer = $number är ett primtal.