密码学数学基础(十)

admin 2023年7月9日12:53:41评论43 views字数 2882阅读9分36秒阅读模式

密码学数学基础(十)

密码学数学基础(十)

闰年的计算

闰年的计算规则是根据格里高利历的规定,它是公历历法的一种,是我们日常生活和科学研究中常用的历法之一。格里高利历是一种太阳历,它是由教皇格里高利十三世在1582年颁布的。相比于太阳历,格里高利历对于日历的计算更加准确,更符合实际需求。而闰年的计算规则就是为了保证格里高利历的精度而制定的。

根据格里高利历的规定,能被4整除但不能被100整除的年份为普通闰年,能被400整除的年份为世纪闰年。公历年份能被100整除但不能被400整除的年份不是闰年。例如,2004年是世纪闰年,1900年不是闰年。

为什么规定闰年的计算规则呢?其实这也是为了保证历法的准确性和精度。普通闰年有366天,而世纪闰年则有366天或366天以上,而且一般情况下,世纪闰年会有一个特殊的日期来纪念这个事件,比如2000年是闰年,因为它既能被400整除,又能被4整除。这种方式也被称为“四百年闰年法”。

那么问题来了,闰年为什么是按照上面的方法来计算呢?接下来,本文将引入一个新的知识点"连分数"来揭开闰年计算的面纱。

前情回顾

在讲述连分数的知识之前呢,我们先要来回顾下我们九年义务教育学过的计算最大公约数的方法,欧几里得除法。

欧几里得除法

在数学中,辗转相除法,又称欧几里得算法(英语:Euclidean algorithm),是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。[^1]具体的算法流程如下,这里展示出来扩展的欧几里得算法的流程图:

密码学数学基础(十)
欧几里得算法流程图

连分数

有了上面欧几里得算法的基础呢,接下来我们就来看一下有关连分数的知识,这里的内容主要是参考参考资料1当中的内容。

定义

满足下面表达式的分数,我们称之为「简单连分数」

其中可以是任意整数,是非负整数。通常上面的表达式我们一般用如下方式来记:

案例

我们来看一个连分数具体的案例,案例来源于参考资料1,我们来看一下的连分数表达,首先对于这个数对运行欧几里得除法,运算过程如下。

通过上面的运算过程,我们可以得到最终的连分数表达为:

再根据上面的表示方案,我们可以得到

连分数性质

有理数

所有的有理数都可以表示为一个有限的简单连分数,这一点不难理解,我们知道所有有理数都可以表示成为一个分数的形式,然后对于两个数字的欧几里得算法,他一定会终止,因此我们便可以得到有理数的简单连分数表示。

倒数

我们来看一下简单连分数的倒数,还是一看上面的那个例子,比如,他们的简单连分数表示只是在前面差了一个0,样例如下:

好了,我们先看这么多连分数的知识,接下来我们来看一下闰年和连分数之间的关系。

闰年和连分数之间的关系

好了,上面呢,我们已经学习完成了有关于连分数的相关知识,那么接下来,我们回归一开始的那个问题,闰年为什么是那么设置的。

首先,我们都知道,一年有365天,这实际上是一个平均值,真实情况是地球公转一周的时间为365天5时48分46秒,剩余的5时48分46秒就是误差了,我们将上面那个式子给搞定成秒,可以计算得知

也就是说,在43200年当中,需要安排10463个闰年,才可以抵消这个误差,并且消除误差的最佳情况是均匀抵消,否则我们就有可能会体验到夏天过春节的快感了,但是如果说均匀抵消的话,那么记忆就成了一个大问题。

我们来看下上面那个分数的连分数表达式,最终可以表达为

根据上面的表达式,我们可以知道第一个渐进分数是,也就是每隔4年就需要增加一天,然后,我们再次来看,第三个渐进分数,也就是说,每个33年需要加8天,也就是每隔99年需要加24天,那么对于100年来说,这里就需要每100年少加一天,如果按照每隔100年,我们都加24天来说,那么43200年就需要加天,这里发现,这里还少了95天,这不太行,因此我们考虑每隔400年,在加上一天,也就是每400年多加一润,这么计算下来,我们会发现,最终每个3323年又多了一天,不过这种情况下,目前形式完全够用了,等真到了那个时候,再想办法修一天就好了,目前是完全够用了。

到这里,整个闰年的计算方案,就水落石出了,在回过头来看上面的算法,根据格里高利历的规定,能被4整除但不能被100整除的年份为普通闰年,能被400整除的年份为世纪闰年,这就非常清晰了。

总结

本文呢,通过闰年的计算方案,给读者们讲述了在数学当中用的还算是比较广泛的一个概念,连分数,当然本文讲述的连分数的应用还是比较浅显的,在密码学当中,连分数也有不少应用,这个等后面有时间再来写一下吧,到这里本文就结束了,感谢各位读者的观看。

参考资料

  • https://pi.math.cornell.edu/~gautam/ContinuedFractions.pdf[1]
  • https://www.math.temple.edu/~yury/calendar/node3.html[2]
  • https://webusers.imj-prg.fr/~michel.waldschmidt/articles/pdf/ContinuedFractionsVI.pdf[3]
  • http://www.maths.liv.ac.uk/~mathsclub/talks/20020126/talk2/continued.pdf[4]

[^1]: https://zh.wikipedia.org/zh-hans/輾轉相除法[5]

Reference

[1]

https://pi.math.cornell.edu/~gautam/ContinuedFractions.pdf: https://pi.math.cornell.edu/~gautam/ContinuedFractions.pdf

[2]

https://www.math.temple.edu/~yury/calendar/node3.html: https://www.math.temple.edu/~yury/calendar/node3.html

[3]

https://webusers.imj-prg.fr/~michel.waldschmidt/articles/pdf/ContinuedFractionsVI.pdf: https://webusers.imj-prg.fr/~michel.waldschmidt/articles/pdf/ContinuedFractionsVI.pdf

[4]

http://www.maths.liv.ac.uk/~mathsclub/talks/20020126/talk2/continued.pdf: http://www.maths.liv.ac.uk/~mathsclub/talks/20020126/talk2/continued.pdf

[5]

https://zh.wikipedia.org/zh-hans/輾轉相除法: https://zh.wikipedia.org/zh-hans/輾轉相除法


原文始发于微信公众号(Coder小Q):密码学数学基础(十)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月9日12:53:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   密码学数学基础(十)https://cn-sec.com/archives/1862284.html

发表评论

匿名网友 填写信息