Home primes: Difference between revisions
Content added Content deleted
m (rust example) |
(→{{header|Ruby}}: Add Ruby) |
||
Line 992: | Line 992: | ||
</pre> |
</pre> |
||
=={{header|Ruby}}== |
|||
<syntaxhighlight lang="ruby">require 'prime' |
|||
def concat(n) |
|||
n.prime_division.map{|pr, exp| pr.to_s*exp }.join.to_i |
|||
end |
|||
def hp(n) |
|||
res = [n] |
|||
res << n = concat(n) until n.prime? |
|||
res |
|||
end |
|||
def hp_to_s(ar) |
|||
return "HP#{ar[0]}(1) = #{ar[0]}" if ar.size == 1 |
|||
ar[0..-2].map.with_index(1){|n, i| "HP#{n}(#{(ar.size-i)}) = "}.join + ar.last.to_s |
|||
end |
|||
(2..20).each {|n| puts hp_to_s(hp(n)) } |
|||
</syntaxhighlight>{{out}} |
|||
<pre>HP2(1) = 2 |
|||
HP3(1) = 3 |
|||
HP4(2) = HP22(1) = 211 |
|||
HP5(1) = 5 |
|||
HP6(1) = 23 |
|||
HP7(1) = 7 |
|||
HP8(13) = HP222(12) = HP2337(11) = HP31941(10) = HP33371313(9) = HP311123771(8) = HP7149317941(7) = HP22931219729(6) = HP112084656339(5) = HP3347911118189(4) = HP11613496501723(3) = HP97130517917327(2) = HP531832651281459(1) = 3331113965338635107 |
|||
HP9(2) = HP33(1) = 311 |
|||
HP10(4) = HP25(3) = HP55(2) = HP511(1) = 773 |
|||
HP11(1) = 11 |
|||
HP12(1) = 223 |
|||
HP13(1) = 13 |
|||
HP14(5) = HP27(4) = HP333(3) = HP3337(2) = HP4771(1) = 13367 |
|||
HP15(4) = HP35(3) = HP57(2) = HP319(1) = 1129 |
|||
HP16(4) = HP2222(3) = HP211101(2) = HP3116397(1) = 31636373 |
|||
HP17(1) = 17 |
|||
HP18(1) = 233 |
|||
HP19(1) = 19 |
|||
HP20(15) = HP225(14) = HP3355(13) = HP51161(12) = HP114651(11) = HP3312739(10) = HP17194867(9) = HP194122073(8) = HP709273797(7) = HP39713717791(6) = HP113610337981(5) = HP733914786213(4) = HP3333723311815403(3) = HP131723655857429041(2) = HP772688237874641409(1) = 3318308475676071413 |
|||
</pre> |
|||
=={{header|Rust}}== |
=={{header|Rust}}== |
||
<syntaxhighlight lang="rust">use std::str::FromStr; |
<syntaxhighlight lang="rust">use std::str::FromStr; |