问题描述
- 求解析下面这个php程序,感觉这个程序效率很低,求解答。
-
<?php
$ss = 2;
$max = 1000;
$arr = array();
echo $max."以内的素数为:";
while ($ss < $max):
$boo = false;
foreach ($arr as $value):
if ($ss % $value == 0):
$boo = true;
break;
endif;
endforeach;
if (!$boo):
echo $ss." ";
$arr[count($arr)] = $ss;
endif;
$ss++;
endwhile;
echo "
";
?>
解决方案
$a = 0;
$b = 0;
echo "1000以内的素数为:";
for ($i = 2; $i <=1000; $i++)
{
$spot = false;
$a++;
for ($j = 2; $j <= sqrt($i); $j++)
{
$b++;
if ($i % $j == 0)
{
$spot = true;
break;
}
}
if (!$spot)
echo $i." ";
}
echo "
";
echo "循环次数:".$a*$b."
";
算法效率是这个比较高,但是上面的那种是什么思想,没学面向对象,这个理解不了。
先说一下我对上面的程序的看法:这里求素数的算法是2到1000的数,分别求余小于本身的素数,如果余数等于0便不是素数。
求素数这种算法能做到吗?
时间: 2024-10-01 09:14:38