2014-09-26 46 views
-5

我在此代码使用PHP取得了一系列的素数的使用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
为什么25,3549仍然出现。

或者可能是这样的代码?

$number = 53; 
 

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

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

但我想包括在结果

+2

1是不是质数 – Daan 2014-09-26 14:04:10

+1

,因为无论25,也不35,也没有49可以被2或3整除。 – Blackhole 2014-09-26 14:04:43

+0

黑洞正确回答了它。玩起来可能很有趣,但如果你只需要一个工作函数,就可以在php> = 5.6上使用gmp_nextprime()。 另请参阅http://stackoverflow.com/questions/16763322/a-formula-to-find-prime-numbers-in-a-loop – twicejr 2014-09-26 14:06:18

回答

0

25%2 = 1

25%3 = 1

这样号1,它显示的数目。

您的功能不显示素数;而是显示不能被2或3整除的数字。

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>'; 
} 
?> 
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++; 
} 

?> 
相关问题