使用php制作了一系列素数

时间:2014-09-26 14:01:46

标签: php numbers primes

我使用php

创建了一系列素数
$number = 53;

for ($i=0; $i<=$number; $i++)
{
    if ( $i == 2 )
    {
        echo "$i ";
    }
    else if ( $i == 3 )
    {
        echo "$i ";
    }
    else if ($i % 2 != 0 && $i % 3 != 0)
    {
        echo "$i ";
    }
}

和结果:1 2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 53
为什么数字253549仍会出现。?

或者可能是这样的代码吗?

$number = 53;

for( $i = 2; $i <= $number; $i++ )
{
    for( $k = 2; $k < $i; $k++ )
    {
        if( $i % $k == 0 )
    {
    break;
    }

    }
    if( $k == $i )
    echo $i." ";
}

但我希望在结果中包含数字

3 个答案:

答案 0 :(得分:0)

25%2 = 1

25%3 = 1

因此,它会显示数字。

您的功能不显示素数;相反,它显示的数字不能被2或3整除。

答案 1 :(得分:0)

您可以使用这段代码。

<?php
$number = 983;
$i = 0;
while($i <= $number)
{
    $prime = true;
    if($i != 0 && $i != 1 && $i != 2)
    {
        echo 'Number: ' . $i;
        // echo $i .'</br>';
        $x = range(2,$i-1);

        foreach($x as $try => $value)
        {
            if(($i % $value) === 0)
            {
                $prime = false;
            }
        }

        if($prime == true)
        {
            echo ' is a prime';
        }
    }
    $i++;
    echo '</br>';
}
?>

答案 2 :(得分:0)

对不起,我知道这有点晚了,但是这个函数可以帮助你完成这个......

<?php 
 //Prime Function
 function fn_prime($number) {
    $i = 2; $result = TRUE;
    while($i < $number) {
        if(!($number%$i)) {
            $result = FALSE;
        }
        $i++;
    }
    return $result;
 }

//Declare integer variable...
$k = 0;

//Start Loop up to any number of your choice for e.g. 200
while($k < 200) {
    if(fn_prime($k)) {
        echo "$k is a prime number<br/>";
    } else {
        echo "$k is not a prime number!<br/>";
    }
    $k++;
}

?>