I am a beginner coder and I am currently taking a course in basic PHP. I was practicing nested loops and one of the material questions included the following:
The program I was attempting to execute
I tried using the following code (which was one I used to check if a number entered through an html form is prime or not but I altered it to fit this question) but it seems incorrect as it only prints 2 and 3
here is the php code I wrote:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
echo "<h3>The prime numbers up to 20 are:</h3>";
echo "<p>1</p>";
//Declaration of Variables
$status=true;
//Nested Loop and Conditions
for( $i = 2; $i <= 20; $i ){
for( $k = 2; $k < $i; $k ){
if( $i % $k == 0 ){
$status=false;
}
}
//Printing
if($status==true)
echo "<p>$i</p>";
}
?>
</body></html>
could anyone tell me what could I be doing wrong? I know this question seems simple, but please forgive me for I am still learning. This is also one of my first questions on the platform so forgive me if the formatting is a little off. Thank you in advance :)
CodePudding user response:
welcome to the community
I added 1 counter
If i and k are equal to zero I increment the counter by 1 and exit the loop
counter is not prime if it is not zero
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
echo "<h3>The prime numbers up to 20 are:</h3>";
echo "<p>1</p>";
//Declaration of Variables
$counter = 0;
//Nested Loop and Conditions
for( $i = 2; $i <= 20; $i ){
$counter = 0;
for( $k = 2; $k < $i; $k ){
if( $i % $k == 0 ){
$counter =1;
break;
}
}
if($counter == 0){
echo "<p>".$i."</p>";
}
}
?>
CodePudding user response:
try this, ( if you want 1 in your result list you should start $i=1 )
for ($i=2; $i <= 20 ; $i ) {
for ($k=2; $k <= 20 ; $k ) {
$divided = false;
if (($i%$k == 0 && $i != $k)) {
$divided = true;
break;
}
}
if (!$divided) {
echo $i .'<br>';
}
}