现在主要在知乎,地址:https://www.zhihu.com/people/qqrrm
老的文章在:http://blog.csdn.net/pyp
花朵数(ruby)
上一篇 /
下一篇 2011-12-28 17:53:55
/ 个人分类:ruby
花朵数,也可以称之为水仙花数,
水仙花数
一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。比如153是3位数,那么1^3+5^3+3^3=153,所以153是水仙花数。
其实我原先写过的,但是只是3位的,这次扩充到任意的位数,但实际上,7位数就要30秒了,8位数没有等到返回。
大概就是3≤N≤7,而且没有比较好的方法可以优化此过程。
#coding:utf-8
N = 4
(('1'<<'0'*(N-1)).to_i..('9'*N).to_i).each do |i| #从10...到99... 循环
n = 0.upto(N-1).inject(0) { |sum,j| sum + i.to_s[j].to_i**N} #N次方加和
p i if n==i
end
优化一下:
#coding: utf-8
N = 6
('1'<<'0'*(N-1)..'9'*N).each do |i|
n = 0.upto(N-1).inject(0) {|sum,j| sum + (i[j].to_i)**N }
puts "#{N}"<<"位花朵数是:"<<"#{i}" if n== i.to_i
end
收藏
举报
TAG: