简体   繁体   English

高效质数测试 PHP

[英]Efficient Prime Number Test PHP

I need assistance on making this test most efficient as possible.我需要帮助使这个测试尽可能高效。 The user inputs a number and I test all the numbers up to the user number.用户输入一个数字,然后我测试用户编号之前的所有数字。

function primetest($pt) {
      $prime_numbers = file("prime.txt", FILE_IGNORE_NEW_LINES);
      $max = sizeof($prime_numbers);
      for ($i = 0; $i < $max; $i++) {
           if ($prime_numbers[$i] < $pt) {
                if ($pt % $prime_numbers[$i] == 0) {
                      $i = $max;
                      return false;
                }
           } else {
               $i = $max;
           }
      }
      return true;
}
$userinput_number = $_POST['f_userinput_number'];
if (isset($userinput_number) == false) {
     echo '<form action="20160505.php" method=POST>
           <strong>Number range to test for prime.</strong>
           '.last_num().'-
           <input type="text" name="f_userinput_number">
           <input type="submit" value="Submit">
           </form>';
} else {
     #WORKS
     $last_num_test = last_num();
     if (($userinput_number > 1) && ($userinput_number == (intval($userinput_number))) && ($last_num_test <= $userinput_number)) {
         for ($i = last_num(); $i < $userinput_number; $i= $i + 2) {
              $test = primetest($i);
              if ($test == false) {
                  echo "<b><font color=\"red\">X</font> $i is not prime</b>";
              } else {
                  #To append number if not already in array and inform user if number is prime.
                  save($i);
              }
         }
    } else {
        echo "Make sure the number is a <b>natural number</b>, and is greater than or equal to <b>    ".last_num()."</b>";
    }
}

Here's exactly what you're looking for...这正是您要找的...

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

?>

Here is a good function for determining if a number is prime:是确定一个数是否为素数的好函数:

function isPrime($num) {

    if($num == 1)
        return false;

    if($num == 2)
        return true;

    if($num % 2 == 0) {
        return false;
    }

    for($i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) {
        if($num % $i == 0)
            return false;
    }

    return true;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM