42 lines
753 B
Scala
42 lines
753 B
Scala
object SmithNumbers extends App {
|
|
|
|
def sumDigits(_n: Int): Int = {
|
|
var n = _n
|
|
var sum = 0
|
|
while (n > 0) {
|
|
sum += (n % 10)
|
|
n /= 10
|
|
}
|
|
sum
|
|
}
|
|
|
|
def primeFactors(_n: Int): List[Int] = {
|
|
var n = _n
|
|
val result = new collection.mutable.ListBuffer[Int]
|
|
val i = 2
|
|
while (n % i == 0) {
|
|
result += i
|
|
n /= i
|
|
}
|
|
var j = 3
|
|
while (j * j <= n) {
|
|
while (n % j == 0) {
|
|
result += i
|
|
n /= j
|
|
}
|
|
j += 2
|
|
}
|
|
if (n != 1) result += n
|
|
result.toList
|
|
}
|
|
|
|
for (n <- 1 until 10000) {
|
|
val factors = primeFactors(n)
|
|
if (factors.size > 1) {
|
|
var sum = sumDigits(n)
|
|
for (f <- factors) sum -= sumDigits(f)
|
|
if (sum == 0) println(n)
|
|
}
|
|
}
|
|
|
|
}
|