⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 primes.pl

📁 SinFP是一种新的识别对方计算机操作系统类型的工具
💻 PL
字号:
#!perl -w#################################################################################                                                                           ####    Copyright (c) 1995 - 2004 by Steffen Beyer.                            ####    All rights reserved.                                                   ####                                                                           ####    This program is free software; you can redistribute it                 ####    and/or modify it under the same terms as Perl itself.                  ####                                                                           #################################################################################use strict;use vars qw($limit $set $start $stop $min $max $norm $i $j);use Bit::Vector;print "\n***** Calculating Prime Numbers - The Sieve Of Erathostenes *****\n";$limit = 0;if (-t STDIN){    while ($limit < 16)    {        print "\nPlease enter an upper limit (>15): ";        $limit = <STDIN>;        if ($limit =~ /^\s*(\d+)\s*$/) { $limit = $1; } else { $limit = 0; }    }    print "\n";}else{    $limit = 100;    print "\nRunning in batch mode - using $limit as upper limit.\n\n";}$set = Bit::Vector->new($limit+1);print "Calculating the prime numbers in the range [2..$limit]...\n\n";$start = time;$set->Primes();## Alternative (slower!):#$set->Fill();#$set->Bit_Off(0);#$set->Bit_Off(1);#for ( $j = 4; $j <= $limit; $j += 2 ) { $set->Bit_Off($j); }#for ( $i = 3; ($j = $i * $i) <= $limit; $i += 2 )#{#    for ( ; $j <= $limit; $j += $i ) { $set->Bit_Off($j); }#}$stop = time;&print_elapsed_time;$min = $set->Min();$max = $set->Max();$norm = $set->Norm();print "Found $norm prime numbers in the range [2..$limit]:\n\n";for ( $i = $min, $j = 0; $i <= $max; $i++ ){    if ($set->contains($i)) { print "prime number #", ++$j, " = $i\n"; }}print "\n";exit;sub print_elapsed_time{    my($flag) = 0;    my($sec,$min,$hour,$year,$yday) = (gmtime($stop - $start))[0,1,2,5,7];    $year -= 70;    print "Elapsed time: ";    if ($year > 0)    {        printf("%d year%s ", $year, ($year!=1)?"s":"");        $flag = 1;    }    if (($yday > 0) || $flag)    {        printf("%d day%s ", $yday, ($yday!=1)?"s":"");        $flag = 1;    }    if (($hour > 0) || $flag)    {        printf("%d hour%s ", $hour, ($hour!=1)?"s":"");        $flag = 1;    }    if (($min > 0) || $flag)    {        printf("%d minute%s ", $min, ($min!=1)?"s":"");    }    printf("%d second%s.\n\n", $sec, ($sec!=1)?"s":"");}__END__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -