2013-02-10 70 views
-4

民間你好我試圖創建一個尋找最近的素數,以一定的整數PHP函數: 例如,如果你被點名功能「nearest_prime」,它會像使用這個:最近的素數給定的整數

  $a = 399823; 
      $b = nearest_prime($a); 
      echo $b; 

*請記住,整數可以是任何大小,並且最接近的素數可以高於或低於整數。如果兩個整數與整數等距,則返回下一個整數。

+0

這顯然是一個家庭作業問題,我正在爲它寫一個函數,以便我自己的學習,如果你想保持張貼。 – Ethan 2013-02-10 21:57:33

回答

0

我只測試了這個簡單,但它似乎工作。肯定有更有效的方法。

function nearest_prime($num) 
{ 
    $up = NULL; 
    $down = NULL; 
    $counter = 1; 
    while($up === NULL && $down === NULL) 
    { 
     $going_up = $num + $counter; 
     $prime_up = TRUE; 
     for ($k = 2;$k < $going_up;$k++) 
     { 
      if (($going_up % $k) === 0) 
      { 
       $prime_up = FALSE; 
      } 
     } 
     if ($prime_up === TRUE) 
     { 
      $up = $going_up; 
     } 

     $going_down = $num - $counter; 
     $prime_down = TRUE; 
     for ($k = 2;$k < $going_down;$k++) 
     { 
      if (($going_down % $k) === 0) 
      { 
       $prime_down = FALSE; 
      } 
     } 
     if ($prime_down === TRUE) 
     { 
      $down = $going_down; 
     } 

     $counter++; 
    } 

    $return = array(); 
    if(!is_null($up)) 
    { 
     $return[] = $up; 
    } 
    if(!is_null($down)) 
    { 
     $return[] = $down; 
    } 
    return implode(',',$return); 
} 
相關問題