# ponderThis201004.frink

```// 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 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 } ```