mersenne.frink

Download or view mersenne.frink in plain text format

// Program to calculate the value of the largest known Mersenne prime.


// p = 13_466_917
// p = 20_996_011   // Largest known as of Nov. 2003
// p = 25_964_951   // Largest known as of Feb. 2005.
// p = 30_402_457   // Largest known as of Dec. 2005.
// p = 32_582_657   // Largest as of September 2006
// p = 37_156_667   // Found in September 2008
// p = 43_112_609   // Also found (slightly earlier! in September 2008)
// p = 57_885_161
// p = 74_207_281   // Found in January 2016
// p = 77_232_917   // Found in December 2017
p = 82_589_933      // Found in December 2018

start = now[]
m=2^p
end = now[]
println["Time to perform exponent: " + format[end-start, "s", 3]]

start = now[]
mp = m - 1
end = now[]

println["Time to perform subtraction: " + format[end-start, "s", 3] + "\n"]
println["2^" + p + " - 1 =\n"]


start = now[]
out = newToString[mp]   // Get string representation
end = now[]

//println[out]

println["Time to format (w/Frink optimizations): " + format[end-start, "s", 3] + "\n"]
println["Length is " + length[out] + " decimal digits."]

start = now[]
mp2 = parseInt[out]
end = now[]

if mp2 != mp
   println["***** ROUND-TRIP ERROR ******"]

println["Time to parse (w/Frink optimizations): " + format[end-start, "s", 3] + "\n"]


start = now[]
out = oldToString[mp]   // Get string representation
end = now[]

//println[out]

println["Time to format (native): " + format[end-start, "s", 3] + "\n"]

start = now[]
out = "$mp"   // Get string representation using automatically-selected algo.
end = now[]

//println[out]

println["Time to format (w/automatic algorithm): " + format[end-start, "s", 3] + "\n"]

start = now[]
mp3 = newJava["java.math.BigInteger", [out]]
end = now[]

//println[out]

println["Time to parse (native): " + format[end-start, "s", 3] + "\n"]
if mp3 != mp
   println["***** ROUND-TRIP ERROR ******"]


Download or view mersenne.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 19972 days, 12 hours, 9 minutes ago.