EKG sequence convergence: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) (Added Perl example) |
|||
Line 272: | Line 272: | ||
EKG(5) and EKG(7) converge at term 21 |
EKG(5) and EKG(7) converge at term 21 |
||
</pre> |
</pre> |
||
=={{header|Perl}}== |
|||
{{trans|Perl 6}} |
|||
<lang perl>use List::Util qw(none); |
|||
sub gcd { my ($u,$v) = @_; $v ? gcd($v, $u%$v) : abs($u) } |
|||
sub shares_divisors_with { gcd( $_[0], $_[1]) > 1 } |
|||
sub EKG { |
|||
my($n,$limit) = @_; |
|||
my @ekg = (1, $n); |
|||
while (@ekg < $limit) { |
|||
for my $i (2..1e18) { |
|||
next unless none { $_ == $i } @ekg and shares_divisors_with($ekg[-1], $i); |
|||
push(@ekg, $i) and last; |
|||
} |
|||
} |
|||
@ekg; |
|||
} |
|||
print "EKG($_): " . join(' ', EKG($_,10)) . "\n" for 2, 5, 7, 9, 10;</lang> |
|||
{{out}} |
|||
<pre>EKG(2): 1 2 4 6 3 9 12 8 10 5 |
|||
EKG(5): 1 5 10 2 4 6 3 9 12 8 |
|||
EKG(7): 1 7 14 2 4 6 3 9 12 8 |
|||
EKG(9): 1 9 3 6 2 4 8 10 5 15 |
|||
EKG(10): 1 10 2 4 6 3 9 12 8 14</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |