标题:
寻找质数
[打印本页]
作者:
cnangel
时间:
2005-8-25 20:15
标题:
寻找质数
来源:
www.leohacks.com
#!/usr/bin/perl
my $startingtime=(times)[0]+(times)[1];
use strict;
use CGI;
our $CGI = new CGI;
print $CGI->header( -charset => ';gb2312'; );
my $testtime="100000000";#找到多少为止(X2)
my $number="1";#从1开始
my $b="1";# 2也算一个
print "2 ";# 2是唯一的偶数质数
for (1 ... $testtime) {
$number=$number + 2;#只算奇数
my $a="";
for (';2';,';3';,';5';,';7';,';11';,';13';,';17';,';19';) {# 20以内的质数
if((($number / $_) eq int($number / $_))&&($number ne $_)){$a.="yes ";}else{$a.="no "}#是否不能被整除
}
next if ($a=~/yes/);
$b++;
print "$number ";#后面留一空格以区分
}
print "\n<br>计算$testtime个数消耗时间: ".sprintf("%.2f",((times)[0]+(times)[1]-$startingtime)*1000)."毫秒,共找到$b个质数";
exit;
复制代码
再一次:
#!/usr/bin/perl
$| = 1;
my $testtime = 10000;
my $number = 1;
my $b = 1;
printf (';%d ';, 2);
LINK:
for (my $i=3;$i<$testtime;$i+=2)
{
for (3 ... int ($i / 3))
{
if ($i % $_ eq 0)
{
next LINK;
}
}
$b++;
printf (';%d ';, $i);
}
printf ("\n<br>計算%d個數消耗時間: %.2f毫秒,共找到%d個質數", $testtime, (times)[0] + (times)[1] * 1000, $b);
__END__
复制代码
中間改成
for (my $j=3;$j<int ($i / 3);$j+=2)
{
if ($i % $_ eq 0)
{
next LINK;
}
}
复制代码
應該會比較好
欢迎光临 星星博客 (http://fans.huhoo.net/)
Powered by Discuz! 7.0.0