n = 1 cont = 0 print "The following are the first 25 pernicious numbers:\n" repeat if isPernicious(n) then print n using ("###"); cont = cont + 1 fi n = n + 1 until cont = 25 print "\n\nThe pernicious numbers between 888,888,877 and 888,888,888 inclusive are:\n" for n = 888888877 to 888888888 if isPernicious(n) print n using("##########"); next n print end sub SumBinaryDigits(number) if number < 0 number = -number // convert negative numbers to positive sum = 0 while number > 0 sum = sum + mod(number, 2) number = int(number / 2) wend return sum end sub sub isPrime(v) if v < 2 return False if mod(v, 2) = 0 return v = 2 if mod(v, 3) = 0 return v = 3 d = 5 while d * d <= v if mod(v, d) = 0 then return False else d = d + 2 : fi wend return True end sub sub isPernicious(number) popcont = SumBinaryDigits(number) return isPrime(popcont) end sub