现在主要在知乎,地址: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:

 

评分:0

我来说两句

日历

« 2024-04-28  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 70466
  • 日志数: 47
  • 图片数: 2
  • 文件数: 2
  • 建立时间: 2006-11-24
  • 更新时间: 2023-01-29

RSS订阅

Open Toolbar