10.10 一个数如果恰好等于它的因数之和(包括1,但不包括这个数本身),这个数就称为“完数”。
例如:28的因子是1、2、4、7、14,而28=1+2+4+7+14,因此28是“完数”。
用ruby实现:
def perfect_number(n=100)
for i in (2..n)
s = 0
for j in (1...i)
if i%j==0
s = s + j
end
end
puts "#{i} is perfect number!\n" if i == s
end
end
perfect_number(1000)
#6 is perfect number!
#28 is perfect number!
#496 is perfect number!
可参考:http://baike.baidu.com/view/640632.htm
这个算法昨天就写出来了,但是因为在学习使用linux和vim,调试还是花了很长时间。