46 lines
919 B
Text
46 lines
919 B
Text
n = 1
|
|
cont = 0
|
|
print "The following are the first 25 pernicious numbers:"
|
|
print
|
|
|
|
do
|
|
if isPernicious(n) then
|
|
print rjust(string(n), 3);
|
|
cont += 1
|
|
end if
|
|
n += 1
|
|
until cont = 25
|
|
|
|
print : print
|
|
print "The pernicious numbers between 888,888,877 and 888,888,888 inclusive are:"
|
|
print
|
|
for n = 888888877 to 888888888
|
|
if isPernicious(n) then print rjust(string(n), 10);
|
|
next n
|
|
end
|
|
|
|
function SumBinaryDigits(number)
|
|
if number < 0 then number = -number # convert negative numbers to positive
|
|
sum = 0
|
|
while number > 0
|
|
sum += number mod 2
|
|
number /= 2
|
|
end while
|
|
return sum
|
|
end function
|
|
|
|
function isPrime(v)
|
|
if v < 2 then return False
|
|
if v mod 2 = 0 then return v = 2
|
|
if v mod 3 = 0 then return v = 3
|
|
d = 5
|
|
while d * d <= v
|
|
if v mod d = 0 then return False else d += 2
|
|
end while
|
|
return True
|
|
end function
|
|
|
|
function isPernicious(number)
|
|
popcont = SumBinaryDigits(number)
|
|
return isPrime(popcont)
|
|
end function
|