68 lines
824 B
Text
68 lines
824 B
Text
MAX = 120
|
|
|
|
def is_prime(n)
|
|
d = 5
|
|
if (n < 2)
|
|
return false
|
|
end
|
|
if (n % 2) = 0
|
|
return n = 2
|
|
end
|
|
if (n % 3) = 0
|
|
return n = 3
|
|
end
|
|
|
|
while (d * d) <= n
|
|
if n % d = 0
|
|
return false
|
|
end
|
|
d += 2
|
|
if n % d = 0
|
|
return false
|
|
end
|
|
d += 4
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
def count_prime_factors(n)
|
|
count = 0; f = 2
|
|
if n = 1
|
|
return 0
|
|
end
|
|
if is_prime(n)
|
|
return 1
|
|
end
|
|
|
|
while true
|
|
if (n % f) = 0
|
|
count += 1
|
|
n /= f
|
|
if n = 1
|
|
return count
|
|
end
|
|
if is_prime(n)
|
|
f = n
|
|
end
|
|
else if f >= 3
|
|
f += 2
|
|
else
|
|
f = 3
|
|
end
|
|
end
|
|
end
|
|
|
|
i = 0; n = 0; count = 0
|
|
println format("The attractive numbers up to and including %d are:\n", MAX)
|
|
for i in range(1, MAX)
|
|
n = count_prime_factors(i)
|
|
if is_prime(n)
|
|
print format("%4d", i)
|
|
count += 1
|
|
if (count % 20) = 0
|
|
println
|
|
end
|
|
end
|
|
end
|
|
println
|