Download or view ponderThis201004.frink in plain text format
// IBM "Ponder This" challenge, 2010-04
//
// http://domino.research.ibm.com/Comm/wwwr_ponder.nsf/challenges/April2010.html
//
// The prime number 4535653, when translated to base 16, gives the hexadecimal
// number 0x453565, which has the same digits as the original number, omitting
// the last digit.
// Find another example of a prime number that, translated to hexadecimal,
// yields the same digits, omitting the last 21 digits.
//a = 1.09649*10^124
a = 10.^124
digits = 1
testNum[1e124, 1e135, digits]
//setPrecision[180]
testNum[lower, upper, digits] :=
{
wasPos = false
a = lower
last = lower
nextLast = lower
lastDiff = a
// setPrecision[digits+5]
stepsize = 1.0 + 10^-(digits+3)
println["Searching from\n$lower\n$upper"]
println["Stepsize is $stepsize, digits are $digits"]
do
{
fa = "$a"
a = floor[a]
astr = "$a"
n = hex[a]
atstr = left[astr, length[astr]-21]
if length[n] == length[atstr] and left[n,digits] == left[atstr,digits]
{
diff = (parseInt[atstr,16] - a)
println[]
isPos = diff > 0
println["\n$fa"]
println[n]
println[atstr]
println[length[atstr] + " digits, diff = " + (1.0 diff)]
if (!isPos)
if wasPos
{
println["====================="]
if (last != undef)
testNum[nextLast, a+100000000, digits+1]
println["=======FAIL at $digits========="]
// println["digits are $digits"]
// setPrecision[digits + 5]
}
wasPos = isPos
}
nextLast = last
last = a
a = a * stepsize
} while a<=upper
}
Download or view ponderThis201004.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 20236 days, 0 hours, 41 minutes ago.