Php获得完美的方形条件

时间:2013-09-23 05:19:27

标签: php algorithm

如何获得一个完美的数字列表,除了整数列表中前一个整数的平方之外。

输入30以下是结果:

1
2
3
square
5
6
7
8
square
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
square
26
27
28
29
30

我只能获得完美广场的结果,但问题是,我也是16平方米。它不被视为正方形,因为4已经是正方形。感谢。

4 个答案:

答案 0 :(得分:2)

如果你想检查一个数字是否是“完美的正方形”:

  1. 检查sqrt()是否为整数。
  2. 如果是,请检查是否为素数
  3. 如果你想生成完美的正方形,

    1. 生成素数
    2. 计算他们的方块

答案 1 :(得分:1)

为查找数组添加完美的正方形并检查它是否已经是一个完美的正方形然后忽略它。

使用:

<?php

$isAlreadySquare = array();
for($i=1; $i<=30; $i++) {

    $isSquare = false;
    for($j=1; $j<$i; $j++) {
        $s = $j*$j;
        if($s==$i && !in_array($j,$isAlreadySquare)) {
            $isAlreadySquare[] = $i;
            $isSquare = true;
        }

    }

    if($isSquare) {
        echo "square<br>";
    } else {
        echo $i."<br>";
    }
}

?>

答案 2 :(得分:1)

只是另一个解决方案:

$sq = $u = array();
for($i = 1; $i <= 30; $i++) {
    $t = sqrt($i);
    if ((int) $t == $t) {
        $sq[] = $i;
    }
}

foreach ($sq as $v) {
    if (!in_array(sqrt($v), $sq)) {
        $u[] = $v;
    }
}

print_r($u);

Array
(
    [0] => 4
    [1] => 9
    [2] => 25
)

答案 3 :(得分:0)

我想到的解决方案之一就是保持查找数组或字典类型的数据结构,当你得到完美的正方形时保持平方值并将条件设置为这样,正如你按顺序进行的那样可以从满足条件的查找表中删除元素,因为在排序的数字中你不会再得到它。

                  Is Number Perfect square && Not available in lookup table