Home primes: Difference between revisions

189 bytes removed ,  3 years ago
→‎{{header|Wren}}: Updated in line with revised task requirements.
mNo edit summary
(→‎{{header|Wren}}: Updated in line with revised task requirements.)
Line 208:
{{libheader|Wren-math}}
{{libheader|Wren-big}}
{{libheader|Wren-fmt}}
{{libheader|Wren-ioutil}}
Not an easy task for Wren which lacks a fast factorization routine for 'big' integers - for now I've just modified the one I use for 'small' integers.
 
Line 215 ⟶ 213:
<lang ecmascript>import "/math" for Int
import "/big" for BigInt
import "/fmt" for Fmt
import "/ioutil" for Output
 
// simple wheel based prime factors routine for BigInt
Line 250 ⟶ 246:
 
for (i in 2..20) {
Fmt.write("HP$-2d = ", i)
if (Int.isPrime(i)) {
System.print("HP%(i) = %(i)")
continue
}
var n = 1
var j = BigInt.new(i)
var h = [j]
while (true) {
var k = primeFactors.call(j).reduce("") { |acc, f| acc + f.toString }
j = BigInt.new(k)
Outputh.fwriteadd("HP%(k)(%(n)) = "j)
if (j.isProbablePrime(1)) {
for (l in n...0) System.printwrite("HP%(h[n-l])(%(kl)) = ")
System.print(h[n])
break
} else {
Line 272 ⟶ 269:
{{out}}
<pre>
HP2 = 2
HP3 = 3
HP4 (2) = HP22(1) = HP211(2) = 211
HP5 = 5
HP6 = HP23(1) = 23
HP7 = 7
HP8 (13) = HP222(112) = HP2337(211) = HP31941(310) = HP33371313(49) = HP311123771(58) = HP7149317941(67) = HP22931219729(76) = HP112084656339(85) = HP3347911118189(94) = HP11613496501723(103) = HP97130517917327(112) = HP531832651281459(12) = HP3331113965338635107(131) = 3331113965338635107
HP9 (2) = HP33(1) = HP311(2) = 311
HP10(4) = HP25(13) = HP55(2) = HP511(3) = HP773(41) = 773
HP11 = 11
HP12 = HP223(1) = 223
HP13 = 13
HP14(5) = HP27(14) = HP333(23) = HP3337(32) = HP4771(4) = HP13367(51) = 13367
HP15(4) = HP35(13) = HP57(2) = HP319(3) = HP1129(41) = 1129
HP16(4) = HP2222(13) = HP211101(2) = HP3116397(3) = HP31636373(41) = 31636373
HP17 = 17
HP18 = HP233(1) = 233
HP19 = 19
HP20(15) = HP225(114) = HP3355(213) = HP51161(312) = HP114651(411) = HP3312739(510) = HP17194867(69) = HP194122073(78) = HP709273797(87) = HP39713717791(96) = HP113610337981(105) = HP733914786213(114) = HP3333723311815403(123) = HP131723655857429041(132) = HP772688237874641409(14) = HP3318308475676071413(151) = 3318308475676071413
</pre>
9,486

edits