40 lines
702 B
Nim
40 lines
702 B
Nim
import strformat
|
|
|
|
func primeFactors(n: int): seq[int] =
|
|
result = newSeq[int]()
|
|
var n = n
|
|
var i = 2
|
|
while n mod i == 0:
|
|
result.add(i)
|
|
n = n div i
|
|
i = 3
|
|
while i * i <= n:
|
|
while n mod i == 0:
|
|
result.add(i)
|
|
n = n div i
|
|
inc i, 2
|
|
if n != 1:
|
|
result.add(n)
|
|
|
|
func sumDigits(n: int): int =
|
|
var n = n
|
|
var sum = 0
|
|
while n > 0:
|
|
inc sum, n mod 10
|
|
n = n div 10
|
|
sum
|
|
|
|
var cnt = 0
|
|
for n in 1..10_000:
|
|
var factors = primeFactors(n)
|
|
if factors.len > 1:
|
|
var sum = sumDigits(n)
|
|
for f in factors:
|
|
dec sum, sumDigits(f)
|
|
if sum == 0:
|
|
stdout.write(&"{n:4} ")
|
|
inc cnt
|
|
if cnt == 10:
|
|
cnt = 0
|
|
stdout.write("\n")
|
|
echo()
|