| // TARGET_BACKEND: JVM |
| |
| operator fun Int.plus(a: Int?) = this + a!! |
| |
| public open class PerfectNumberFinder() { |
| open public fun isPerfect(number : Int) : Boolean { |
| var factors : MutableList<Int?> = ArrayList<Int?>() |
| factors?.add(1) |
| factors?.add(number) |
| for (i in 2..(Math.sqrt((number).toDouble()) - 1).toInt()) |
| if (((number % i) == 0)) { |
| factors?.add(i) |
| if (((number / i) != i)) |
| factors?.add((number / i)) |
| |
| } |
| |
| var sum : Int = 0 |
| for (i : Int? in factors) |
| sum += i |
| return ((sum - number) == number) |
| } |
| } |
| |
| fun box() = if (PerfectNumberFinder().isPerfect(28)) "OK" else "fail" |