ponderThis201004.frink

View or download 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
}


View or download 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 17836 days, 23 hours, 53 minutes ago.