Board logo

标题: 寻找质数 [打印本页]

作者: cnangel    时间: 2005-8-25 20:15     标题: 寻找质数

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




欢迎光临 星星博客 (http://commerce.huhoo.net/) Powered by Discuz! 7.0.0