Welcome to Rainy's blog!

闰年的算法

上一篇 / 下一篇  2008-01-22 16:20:39 / 个人分类:Ruby

计算是否是闰年,其实关键是闰年的算法,也就是闰年的来历。先看完下面的资料,估计就大体明白了。关于公历闰年是这样规定的:地球绕太阳公转一周叫做一回归年,一回归年长365日5时48分46秒。因此,公历规定有平年和闰年,平年一年有365日,比回归年短0.2422日,四年共短0.9688 日,故每四年增加一日,这一年有366日,就是闰年。但四年增加一日比四个回归年又多0.0312日,400年后将多3.12日,故在400年中少设3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900 年、2100年就不是闰年。 我们居住的地球总是绕着太阳旋转的。地球绕太阳转一圈需要365天5时48分46秒,也就是365.2422天。为了方便,一年定为365天,叫做平年;这样每过四年差不多就要多出一天来,把这一天加在2月里,这一年就有366天,叫做闰年。 通常,每四年里有三个平年一个闰年。公历年份是4的倍数的,一般都是闰年。 按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的就是平年。 也就是我们通常所说的: 四年一闰,百年不闰,四百年再闰。
Ruby程序如下:
year=nil
while year!='exit'
  puts 'input a year with format like yyyy:'
  STDOUT.flush
  year=gets.chomp
  if year!='exit' then
    year=year.to_i
  leap = case
    when (year % 4==0 && year % 100 != 0) || year % 400 == 0: true
    else false
  end
  puts leap
  end
end


TAG: Ruby

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-13  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 23420
  • 日志数: 33
  • 图片数: 5
  • 书签数: 2
  • 建立时间: 2006-12-05
  • 更新时间: 2008-03-22

RSS订阅

Open Toolbar