EKG sequence convergence: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) (→{{header|Perl}}: added convergence test) |
|||
Line 208: | Line 208: | ||
EKG(5) and EKG(7) converge at term 21 |
EKG(5) and EKG(7) converge at term 21 |
||
</pre> |
|||
=={{header|Julia}}== |
|||
{{trans|Perl}} |
|||
<lang julia> using Primes |
|||
function ekgsequence(n, limit) |
|||
ekg::Array{Int,1} = [1, n] |
|||
while length(ekg) < limit |
|||
for i in 2:2<<18 |
|||
if all(j -> j != i, ekg) && gcd(ekg[end], i) > 1 |
|||
push!(ekg, i) |
|||
break |
|||
end |
|||
end |
|||
end |
|||
ekg |
|||
end |
|||
function convergeat(n, m, max = 100) |
|||
ekgn = ekgsequence(n, max) |
|||
ekgm = ekgsequence(m, max) |
|||
for i in 3:max |
|||
if ekgn[i] == ekgm[i] && sum(ekgn[1:i+1]) == sum(ekgm[1:i+1]) |
|||
return i |
|||
end |
|||
end |
|||
warn("no converge in $max terms") |
|||
end |
|||
[println(rpad("EKG($i): ", 9), join(ekgsequence(i, 30), " ")) for i in [2, 5, 7, 9, 10]] |
|||
println("EKGs of 5 & 7 converge at term ", convergeat(5, 7)) |
|||
</lang> |
|||
{{output}} <pre> EKG(2): 1 2 4 6 3 9 12 8 10 5 |
|||
EKG(2): 1 2 4 6 3 9 12 8 10 5 15 18 14 7 21 24 16 20 22 11 33 27 30 25 35 28 26 13 39 36 |
|||
EKG(5): 1 5 10 2 4 6 3 9 12 8 14 7 21 15 18 16 20 22 11 33 24 26 13 39 27 30 25 35 28 32 |
|||
EKG(7): 1 7 14 2 4 6 3 9 12 8 10 5 15 18 16 20 22 11 33 21 24 26 13 39 27 30 25 35 28 32 |
|||
EKG(9): 1 9 3 6 2 4 8 10 5 15 12 14 7 21 18 16 20 22 11 33 24 26 13 39 27 30 25 35 28 32 |
|||
EKG(10): 1 10 2 4 6 3 9 12 8 14 7 21 15 5 20 16 18 22 11 33 24 26 13 39 27 30 25 35 28 32 |
|||
EKGs of 5 & 7 converge at term 21 |
|||
</pre> |
</pre> |
||