复活节日期算法

发布时间:

  2013年的复活节是3月31日

  复活节是西方传统的节日,公元325年尼西亚宗教会议规定,每年过春分月圆后的第一个星期天为复活节。其日期是不固定的,通常是要查看日历才能知道。

  现在有一个简便的算法供大家参考!

  年份只限于1900年到2099年

  NO.1 设要求的那一年是Y年,从Y减去1900,其差记为N。

  NO.2 用19作除数去除N,余数记为A。

  NO.3 用4作除数去除N,不管余数,把商记为Q。

  NO.4 用19去除7A+1,把商记为B,不管余数。

  NO.5 用29去除11A+4-B,余数记为M。

  NO.6 用7去除N+Q+31-M,余数记为W。

  NO.7 计算25-M-W。

  得出答数即可定出复活节的日期。若为正数,月份为4月,如为负数,月份为3月。若为0,则为3月31日。

  现在我们选两个年份来实例计算一遍。

  例1. 1983年的复活节日期。

  1. 1983-1900=83, N=83

  2. N/19=4余7, A=7

  3. N/4=20余3, Q=20

  4. 7A+1=50,50/19=2余12, B=2

  5. 11A+4-B=79,79/29=2余21, M=21

  6. N+Q+31-M=113,113/7=16余1, W=1

  7. 25-M-W=3

  由此可知,1983年的复活节日期是4月3日。

  例2. 2008年,中国将在北京举办奥运会,那一年复活节是哪一天呢?

  1. 2008-1900=108, N=108

  2. N/19=5余13, A=13

  3. N/4=27, Q=27

  4. 7A+1=92,92/19=4余16, B=4

  5. 11A+4-B=143,143/29=4余27, M=27

  6. N+Q+31-M=139,139/7=19余6, W=6

  7. 25-M-W=-8, 31-8=23

  所以该年复活节日期是3月23日。

  按照复杂的天文历法分析与计算,最早的复活节日期是3月22日,上一次出现是在1818年,而且要到2285年才会再度出现。最晚的日期是在4月25日,上一次出现是在1943年,要到2038年才会出现。

  用MATLAB计算2007年复活节日期,程序如下:

  y = 2007;

  n = y-1900;

  a = mod(n,19);

  q = floor(n/4);

  b = floor((7*a+1)/19);

  m = mod(11*a+4-b,29);

  w = mod(n+q+31-m,7);

  d = 25-m-w

  得到d=8,即2007年4月8日。2006年4月16日,2008年3月23日,2009年4月12日,2010年4月4日。

  由于时间关系,我已经计了一百年内的复活节,这是西欧的计法,东欧及俄罗斯不适用。祝大家在以后的复活节快乐!

  23/3/2008 17/4/2033 14/4/2058 4/4/2083

  12/4/2009 9/4/2034 30/3/2059 26/3/2084

  4/4/2010 25/3/2035 18/4/2060 15/4/2085

  24/4/2011 13/4/2036 10/4/2061 31/3/2086

  8/4/2012 5/4/2037 26/3/2062 20/4/2087

  31/3/2013 25/4/2038 15/4/2063 11/4/2088

  20/4/2014 10/4/2039 6/4/2064 3/4/2089

  5/4/2015 1/4/2040 29/3/2065 16/4/2090

  27/3/2016 21/4/2041 11/4/2066 8/4/2091

  16/4/2017 6/4/2042 3/4/2067 30/3/2092

  1/4/2018 29/3/2043 22/4/2068 12/4/2093

  21/4/2019 17/4/2044 14/4/2069 4/4/2094

  12/4/2020 9/4/2045 30/3/2070 24/4/2095

  4/4/2021 25/3/2046 19/4/2071 15/4/2096

  17/4/2022 14/4/2047 10/4/2072 31/3/2097

  9/4/2023 5/4/2048 26/3/2073 20/4/2098

  31/3/2024 18/4/2049 15/4/2074 12/4/2099

  20/4/2025 10/4/2050 7/4/2075 28/3/2100

  5/4/2026 2/4/2051 19/4/2076 17/4/2101

  28/3/2027 21/4/2052 11/4/2077 9/4/2102

  16/4/2028 6/4/2053 3/4/2078 25/3/2103

  1/4/2029 29/3/2054 23/4/2079 13/4/2104

  21/4/2030 18/4/2055 7/4/2080 5/4/2105

  13/4/2031 2/4/2056 30/3/2081 18/4/2106

  28/3/2032 22/4/2057 19/4/2082 10/4/2107

  1/4/2108

微信扫码分享

复制成功