已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 源码

标题: [超优化,100000以内1s]关于求质数,我的看法

作者: @Ta

时间: 2014-04-09

点击: 3697

<?php
$btime=microtime(true);
$begin=2;
$end=100000;
$num=array_fill(2,($end-1),0);
$a=2;
$b=$end/2;
while($a<=$b){
$s=$end/$a;
$num[$a]=1;
for($c=2;$c<=$s;$c-=-1){
unset($num[$a*$c]);
}
foreach($num as $key => $val){
if($val==0){
$a=$key; break;
}
}
}
$znum=0;
for($d=2;$d<$begin;$d-=-1){
unset($num[$d]);
}
$znum=count($num);
echo $znum;
$etime=microtime(true);
echo("<br />".($etime-$btime));
?>
测试[YH空间]:http://app2.nkzx.tk/z.php
hiftp在线运行
9592
3.6581439971924

[隐藏样式|查看源码]


『回复列表(10|隐藏机器人聊天)』

1.
$end = 10000;
(/@Ta/2014-04-08 13:35//)

2. @myzly,测试感觉有死循环,把end改为10仍然不出结果
(/@Ta/2014-04-08 13:46//)

3. $a++;要不要
(/@Ta/2014-04-08 13:53//)

4. 赞一个@myzly
(/@Ta/2014-04-08 18:10//)

5. :-C
(/@Ta/2014-04-08 21:37//)

6. 。。
(/@Ta/2014-04-08 22:38//)

7. 将end=10000后结果为:
1229
执行时间:0.012222051620483
from:
http://app.hiftp.net/?do=tool.coderun
(/@Ta/2014-04-08 23:26//)

8. @水木易安@funch,用筛法可以短时间算10^6的。
(/@Ta/2014-04-09 14:58//)

9. 9592
1.85345697403
(/@Ta/2014-04-09 15:24//)

10. @myzly,这个代码没有未优化时的快~~~

上次的代码:
------------------------
质数的个数:1229
查找所用时间:0.0039999485015869秒
------------------------
这次的代码:
------------------------
质数的个数:1229
查找所用时间:0.016000986099243秒
(/@Ta/2014-04-09 22:27//)

回复需要登录

10月12日 04:04 星期天

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1