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 17596 days, 22 hours, 3 minutes ago.