2013-02-10 81 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); 
} 
相关问题