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

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 19093 days, 18 hours, 32 minutes ago.