2013-11-26 59 views
0

我只是一個PHP新手。目前我正在通過遞歸函數。所以我想知道如何在遞歸中獲得從0到1000的所有素數。那麼有人可以告訴我該怎麼做?這也將幫助我獲得有關遞歸函數的想法。php在遞歸函數中獲得主數字

+0

在這裏,你已經得到了答案: http://stackoverflow.com/questions/16763322/a-formula-to-find-prime -numbers-in-a-loop –

+0

哇我不知道這個。你還有gmp_nextprime函數:http://php.net/manual/en/function.gmp-nextprime.php –

回答

0
<?php 
// Checks for prime numbers 

function IsPrime($num) {  
    $No = 0 ; 
    $Result = 0 ; 

    for($Divisor = 2 ; $Divisor < $num; $Divisor++) { 
     $Result = $num/$Divisor ; 
     if($Result != 1 && intval($Result) == $Result) { 
      $No = 1 ; 
      break ; 
     } 
    } 

    if($No != 1 ) { 
     $Result = $num ; 
    } 

    $No = 0; 

    // If the only divisor is the number itself, it's prime 
    return ($Result == $num) ? 'Yes' : 'No' ; 
} 

for($i = 0; $i < 1000; $i++) { 
    echo "<b> Testing number $i : </b>" ; 
    echo $i." is a prime number? ". IsPrime($i)."<br />"; 
} 

    ?> 
+1

這不是遞歸 –

+0

此外,結果不完全正確,你的函數聲明1是一個素數。 –

+0

我不認爲這是遞歸函數。我想要遞歸函數 –

0

你可以做這樣的..

<?php 

function dispPrime($i) 
{ 
    if($i<=1000) 
    { 
     if(gmp_prob_prime($i)===2) // Checks the number for prime. 
     { 
      echo "$i is a Prime Number"; 
     } 
     $i++; 
     dispPrime($i); // Recursive call (Function that calls itself) 
    } 
    else{ exit;} 

} 

dispPrime(0); 
+0

如果你打算偷吃一個懶惰的OP,至少要添加一個你正在做什麼的解釋。很明顯,OP不知道這將如何工作,所以_explain it_。 – Bojangles

+0

對於OP,使用'gmp_prob_prime()'也可能不如手動操作。 –