2014-02-12 4 views
-1

, пожалуйста, помогите мне с кодом, чтобы проверить, являются ли цифры в таблице первыми: это мой код ниже. Я использовал функцию IsPrime, но я получаю сообщение об ошибке, когда из когда я вызвать функцию в таблице она возвращает слова «isPime»PHP-функция isPrime() не работает

<?php 
     $x="num1"; 
     $y="num2"; 

     if(isset($_POST['Submit'])) { 

      $start=$_POST['num1']; 
      $end=$_POST['num2']; 

      echo "<table width='250' cellpadding='2' cellspacing='4' border='1'>"; 
      echo "<tr><td>Number</td><td>Odd or Even?</td><td>Prime?</td></tr>"; 

      for ($start;$start<=$end;$start++) { 

       $answer=$start; 
       $number=$answer; 
       $check="text"; 
       $num=$answer; 

        if($number%2==0) { 

         $check="Even"; 

        } else { 

         $check="Odd"; 

        } 

       { } 

      echo "<tr><td>$answer</td><td>$check</td><td> 

    <?php ?> 

    </td></tr>"; 

     } echo "</table>"; 

    } ?> 
+0

пожалуйста, поделитесь код – Jenz

+0

Когда вы пишете вопрос в нижней части страницы есть область предварительного просмотра. –

+0

"; эхо " Номер Чет или нечет Prime?"; for ($ start; $ start <= $ end; $ start ++) { $ answer = $ start; $ number = $ answer; $ check = "text"; $ num = $ answer; if ($ number% 2 == 0) { $ check = "Even"; } { $ check = "Нечетный"; } { } эхо " $ ответить $ проверить"; } echo ""; } ?> – user3300891

ответ

1

Вы пропускаете весь премьер-чек, и вы даже не печатает ничего вашей третьей колонке.

Также, похоже, кто-то удалил ваш код в первом EDIT и изменил его во втором. У меня как-то была копия первого редактирования и могла бы привести пример.

Это рабочий пример вашего кода:

<?php 

$x="num1"; $y="num2"; 
if(isset($_POST['Submit'])) 
{ 
    $start=$_POST['num1']; $end=$_POST['num2']; 
    echo "<table width='250' cellpadding='2' cellspacing='4' border='1'>"; 
    echo "<tr><td>Number</td><td>Odd or Even?</td><td>Prime?</td></tr>"; 
    for ($start;$start<=$end;$start++) 
    { 
     $answer=$start; $number=$answer; $check="text"; $num=$answer; 
     if($number%2==0) 
      { $check="Even"; } 
     else 
      { $check="Odd"; } 
     $prime = (isPrime($number)? 'Yes':'No'); 
     echo "<tr><td>$answer</td><td>$check</td><td>$prime</td></tr>"; 
    } 
    echo "</table>"; 
} 
function isPrime($num) { 
    //1 is not prime. See: http://en.wikipedia.org/wiki/Prime_number#Primality_of_one 
    if($num == 1) 
     return false; 

    //2 is prime (the only even number that is prime) 
    if($num == 2) 
     return true; 

    /** 
    * if the number is divisible by two, then it's not prime and it's no longer 
    * needed to check other even numbers 
    */ 
    if($num % 2 == 0) { 
     return false; 
    } 

    /** 
    * Checks the odd numbers. If any of them is a factor, then it returns false. 
    * The sqrt can be an aproximation, hence just for the sake of 
    * security, one rounds it to the next highest integer value. 
    */ 
    for($i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { 
     if($num % $i == 0) 
      return false; 
    } 

    return true; 
} 
?> 
+0

Этот простой расчет неверен ... Вместо '$ num == 1' и' $ num == 2' просто используйте '$ num <2', потому что вы не проверяете отрицательные числа. –

+0

Этот Правильный расчет является правильным. Я не могу изменить '$ num == 1' и' $ num == 2' на '$ num <2', потому что есть два разных результата. 1 не является простым и 2. Также отрицательные числа по умолчанию не являются простыми. Если бы вы принимали отрицательные числа, вам нужно было бы вернуть false для отрицательных целых чисел и нецелых чисел 'if ($ num <0 ||! Is_int ($ num)) return false;'. Но в основном вы будете использовать эту функцию только в том случае, если ожидаете положительные целые числа. И я могу предположить, что OP '$ num' всегда положительные целые числа, из-за его желаемого вывода. – Timmetje

1

попробовать это

<?php 
    $x="num1"; 
    $y="num2"; 

    if(isset($_POST['Submit'])) { 

     $start=$_POST['num1']; 
     $end=$_POST['num2']; 

     echo "<table width='250' cellpadding='2' cellspacing='4' border='1'>"; 
     echo "<tr><td>Number</td><td>Odd or Even?</td><td>Prime?</td></tr>"; 

     for ($start;$start<=$end;$start++) { 

      $answer=$start; 
      $number=$answer; 
      $check="text"; 
      $num=$answer; 

      if($number%2==0) 
      { 
       $check="Even"; 
      } 
      else 
      { 
       $check="Odd"; 
      } 

     if(isPrimeNumber($number)) 
     { 
      $pirme_status = "Yes"; 
     } 
     else 
     { 
      $pirme_status = "No"; 
     } 

     echo "<tr><td>$answer</td><td>$check</td><td>$pirme_status</td><</tr>"; 



    } echo "</table>"; 

} 

и PHP функция

function isPrimeNumber($number) 
{ 
    $flag = true; 
    $max_count = ceil($number/2); 
    for($i=2; $i<$max_count; $i++) 
    { 
     if($number%$i==0) 
     { 
      $flag = false; 
        break; 
     } 
    } 
    return $flag; 
} 
?> 
Смежные вопросы