Idoneal numbers

func is_idoneal (n) {

    for a in (1..n) {
        for b in (a+1 .. n) {
            break if (a*b + a + b > n)
            for c in (b+1 .. n) {
                var sum = (a*b + b*c + a*c)
                return false if (n == sum)
                break if (sum > n)
            }
        }
    }

    return true
}

1..255 -> grep(is_idoneal).each_slice(10, {|*a|
    say a.map { '%4s' % _ }.join(' ')
})

Output:

Last updated

Was this helpful?