43 lines
972 B
Text
43 lines
972 B
Text
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
|