Home primes: Difference between revisions
Content added Content deleted
(Added Sidef) |
(→{{header|Wren}}: Added embedded version based on new Wren-gmp module.) |
||
Line 853: | Line 853: | ||
{{libheader|Wren-big}} |
{{libheader|Wren-big}} |
||
{{libheader|Wren-sort}} |
{{libheader|Wren-sort}} |
||
===Wren-cli=== |
|||
This uses a combination of the Pollard Rho algorithm and wheel based factorization to try and factorize the large numbers involved here in a reasonable time. |
This uses a combination of the Pollard Rho algorithm and wheel based factorization to try and factorize the large numbers involved here in a reasonable time. |
||
Line 986: | Line 988: | ||
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 |
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 |
||
HP65(19) = HP513(18) = HP33319(17) = HP1113233(16) = HP11101203(15) = HP332353629(14) = HP33152324247(13) = HP3337473732109(12) = HP111801316843763(11) = HP151740406071813(10) = HP31313548335458223(9) = HP3397179373752371411(8) = HP157116011350675311441(7) = HP331333391143947279384649(6) = HP11232040692636417517893491(5) = HP711175663983039633268945697(4) = HP292951656531350398312122544283(3) = HP2283450603791282934064985326977(2) = HP333297925330304453879367290955541(1) = 1381321118321175157763339900357651 |
HP65(19) = HP513(18) = HP33319(17) = HP1113233(16) = HP11101203(15) = HP332353629(14) = HP33152324247(13) = HP3337473732109(12) = HP111801316843763(11) = HP151740406071813(10) = HP31313548335458223(9) = HP3397179373752371411(8) = HP157116011350675311441(7) = HP331333391143947279384649(6) = HP11232040692636417517893491(5) = HP711175663983039633268945697(4) = HP292951656531350398312122544283(3) = HP2283450603791282934064985326977(2) = HP333297925330304453879367290955541(1) = 1381321118321175157763339900357651 |
||
</pre> |
|||
<br> |
|||
===Embedded=== |
|||
{{libheader|Wren-gmp}} |
|||
This reduces the overall time taken to 5.1 seconds. The factorization method used is essentially the same as the Wren-cli version so the vast improvement in performance is due solely to the use of GMP. |
|||
<lang ecmascript>/* home_primes_gmp.wren */ |
|||
import "./gmp" for Mpz |
|||
import "./math" for Int |
|||
var list = (2..20).toList |
|||
list.add(65) |
|||
for (i in list) { |
|||
if (Int.isPrime(i)) { |
|||
System.print("HP%(i) = %(i)") |
|||
continue |
|||
} |
|||
var n = 1 |
|||
var j = Mpz.from(i) |
|||
var h = [j.copy()] |
|||
while (true) { |
|||
var k = Mpz.primeFactors(j).reduce("") { |acc, f| acc + f.toString } |
|||
j = Mpz.fromStr(k) |
|||
h.add(j) |
|||
if (j.probPrime(15) > 0) { |
|||
for (l in n...0) System.write("HP%(h[n-l])(%(l)) = ") |
|||
System.print(h[n]) |
|||
break |
|||
} else { |
|||
n = n + 1 |
|||
} |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
Same as Wren-cli version. |
|||
</pre> |
</pre> |