Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
29
Task/Farey-sequence/Perl/farey-sequence-1.pl
Normal file
29
Task/Farey-sequence/Perl/farey-sequence-1.pl
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use warnings;
|
||||
use strict;
|
||||
use Math::BigRat;
|
||||
use ntheory qw/euler_phi vecsum/;
|
||||
|
||||
sub farey {
|
||||
my $N = shift;
|
||||
my @f;
|
||||
my($m0,$n0, $m1,$n1) = (0, 1, 1, $N);
|
||||
push @f, Math::BigRat->new("$m0/$n0");
|
||||
push @f, Math::BigRat->new("$m1/$n1");
|
||||
while ($f[-1] < 1) {
|
||||
my $m = int( ($n0 + $N) / $n1) * $m1 - $m0;
|
||||
my $n = int( ($n0 + $N) / $n1) * $n1 - $n0;
|
||||
($m0,$n0, $m1,$n1) = ($m1,$n1, $m,$n);
|
||||
push @f, Math::BigRat->new("$m/$n");
|
||||
}
|
||||
@f;
|
||||
}
|
||||
sub farey_count { 1 + vecsum(euler_phi(1, shift)); }
|
||||
|
||||
for (1 .. 11) {
|
||||
my @f = map { join "/", $_->parts } # Force 0/1 and 1/1
|
||||
farey($_);
|
||||
print "F$_: [@f]\n";
|
||||
}
|
||||
for (1 .. 10, 100000) {
|
||||
print "F${_}00: ", farey_count(100*$_), " members\n";
|
||||
}
|
||||
27
Task/Farey-sequence/Perl/farey-sequence-2.pl
Normal file
27
Task/Farey-sequence/Perl/farey-sequence-2.pl
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
use warnings;
|
||||
use strict;
|
||||
use Math::BigRat;
|
||||
|
||||
sub farey {
|
||||
my $n = shift;
|
||||
my %v;
|
||||
for my $k (1 .. $n) {
|
||||
for my $i (0 .. $k) {
|
||||
$v{ Math::BigRat->new("$i/$k")->bstr }++;
|
||||
}
|
||||
}
|
||||
my @f = sort {$a <=> $b }
|
||||
map { Math::BigRat->new($_) }
|
||||
keys %v;
|
||||
@f;
|
||||
}
|
||||
|
||||
for (1 .. 11) {
|
||||
my @f = map { join "/", $_->parts } # Force 0/1 and 1/1
|
||||
farey($_);
|
||||
print "F$_: [@f]\n";
|
||||
}
|
||||
for (1 .. 10) {
|
||||
my @f = farey(100*$_);
|
||||
print "F${_}00: ", scalar(@f), " members\n";
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue