【问题标题】:Encounter issues when checking prime number in PHP在 PHP 中检查素数时遇到问题
【发布时间】:2021-02-27 05:27:32
【问题描述】:
<?php
   if (isset($_GET['number'])){ // Loaded for first time?
       if(isValid($_GET['number'])){    
          $isPrime = true;
          // Please enter code here

          // I have tried the codes here but idk why it cannot seem to work 
          $i = $_GET(['number']);
          if ($number == 1) {
            $isPrime = false;
            return $isPrime;
         }
         for ($j = 2; $i <= $number/2; $i++){ 
            if ($number % $i == 0) 
            $isPrime = false;
            return $isPrime;
        } 
        return $isPrime; 

        // End of code

        if ($isPrime) {      
            echo "<p>".$i." is a prime number!</p>";        
        } else {
            echo "<p>".$i." is not prime.</p>";
        } 
        
    } else{
        // User submitted something which is not a positive whole number 
        echo "<p>Please enter a positive whole number.</p>";    
    }
 }

// check if the given number is a valid numeric value
// round() rounds a floating point value
 function isValid($number) {
    if(is_numeric($number) && $number > 0
            && $number == round($number, 0)) {
         return true;
   } 
   else {
       return false;
   }
 }
?>

我已经尝试了上面的代码,但是我遇到了问题。请帮帮我谢谢!我试过的代码在 // Please enter code here to // End of code

当我运行 php 文件时,将显示上面的图像。用户必须输入一个数字,当用户点击“Go!”时,它将检查用户输入的是否是质数。按钮。

【问题讨论】:

  • $i = $_GET(['number']); 应该是 $i = $_GET['number'];$_GET 是一个超全局数组,而不是一个函数。 “我遇到了问题” - 具体是什么问题?语法错误? PHP 警告/异常?你的逻辑有问题吗?您还可以使用is_int()if (is_int($number) &amp;&amp; $number &gt; 0) 来简化您的isValid 逻辑。然后你可以删除条件本身,只做return is_int($number) &amp;&amp; $number &gt; 0而不是专门返回truefalse

标签: php primes


【解决方案1】:

你犯了很多错误。 所以我编辑了整个代码。

这里是:

<?php
if (isset($_GET['number'])) { // Loaded for first time?
    if (isValid($_GET['number'])) {
        $isPrime = true;
        // Please enter code here
        
        // I have tried the codes here but idk why it cannot seem to work
        $i = $_GET['number'];
        if ($i == 1) {
            $isPrime = false;
        }
        
        for ($j = 2; $j <= $i / 2; $j++) {
            if ($i % $j == 0)
                $isPrime = false;
        }
        
        // End of code
        
        if ($isPrime) {
            echo "<p>" . $i . " is a prime number!</p>";
        } else {
            echo "<p>" . $i . " is not prime.</p>";
        }
        
    } else {
        // User submitted something which is not a positive whole number
        echo "<p>Please enter a positive whole number.</p>";
    }
}

// check if the given number is a valid numeric value
// round() rounds a floating point value
function isValid($number)
{
    if (is_numeric($number) && $number > 0
        && $number == round($number)) {
        return true;
    } else {
        return false;
    }
}

?>

<form action="index.php" method="get">
    <input type="number" name="number">
    <input type="submit" value="Go!">
</form>

【讨论】:

  • 嗨@MMD 我在这一行遇到了问题:$i = $_GET['number'];
  • 我的代码没有问题。在您输入的代码中 $_GET ( ['number'] ) 括号是错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
相关资源
最近更新 更多