RosettaCodeData/Task/Smith-numbers/Wren/smith-numbers.wren
2024-03-06 22:25:12 -08:00

23 lines
548 B
Text

import "./math" for Int
import "./fmt" for Fmt
var sumDigits = Fn.new { |n|
var sum = 0
while (n > 0) {
sum = sum + n%10
n = (n/10).floor
}
return sum
}
var smiths = []
System.print("The Smith numbers below 10,000 are:")
for (i in 2...10000) {
if (!Int.isPrime(i)) {
var thisSum = sumDigits.call(i)
var factors = Int.primeFactors(i)
var factSum = factors.reduce(0) { |acc, f| acc + sumDigits.call(f) }
if (thisSum == factSum) smiths.add(i)
}
}
Fmt.tprint("$4d", smiths, 16)