Parallel calculations: Difference between revisions
Content added Content deleted
Walterpachl (talk | contribs) m (add ooRexx) |
(Add Perl) |
||
Line 1,369: | Line 1,369: | ||
print str((t2-t1)/freq,3) " secs " numbers(n) " " f 'number with highest prime factor |
print str((t2-t1)/freq,3) " secs " numbers(n) " " f 'number with highest prime factor |
||
</lang> |
</lang> |
||
=={{header|Perl}}== |
|||
{{libheader|ntheory}} |
|||
<lang perl>use ntheory qw/factor vecmax/; |
|||
use threads; |
|||
use threads::shared; |
|||
my @results :shared; |
|||
my $tnum = 0; |
|||
$_->join() for |
|||
map { threads->create('tfactor', $tnum++, $_) } |
|||
(qw/576460752303423487 576460752303423487 576460752303423487 112272537195293 |
|||
115284584522153 115280098190773 115797840077099 112582718962171 299866111963290359/); |
|||
my $lmf = vecmax( map { $_->[1] } @results ); |
|||
print "Largest minimal factor of $lmf found in:\n"; |
|||
print " $_->[0] = [@$_[1..$#$_]]\n" for grep { $_->[1] == $lmf } @results; |
|||
sub tfactor { |
|||
my($tnum, $n) = @_; |
|||
push @results, shared_clone([$n, factor($n)]); |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
Largest minimal factor of 544651 found in: |
|||
115797840077099 = [544651 212609249] |
|||
299866111963290359 = [544651 550565613509] |
|||
</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |