干 支 法 纪 年 算 法

合集下载

干支纪年法如何计算干支纪年法简便算法公式

干支纪年法如何计算干支纪年法简便算法公式

第一步,确定起始年份。

干支纪年法起始于公元前2637年,也就是“庚子年”。

从这一年开始,一直往后计算,直到计算到现在的年份。

第二步,计算年份偏移值。

按照干支纪年法的循环周期,每过60年
又回到了起始的“庚子年”。

因此,我们需要计算当前年份与起始年份之
间相差了多少个循环周期(60年)。

第三步,计算天干和地支。

根据起始年份和年份偏移值,可以确定当
前年份的天干和地支。

天干的计算公式为:(起始年份的天干索引 + 年份
偏移值) mod 10;地支的计算公式为:(起始年份的地支索引 + 年份偏移值) mod 12
第四步,确定年份的干支组合。

通过第三步计算得到的天干和地支的
索引,可以确定当前年份的干支组合。

例如,第三步计算得到的天干索引
为2(乙)地支索引为9(巳),那么当前年份就是“乙巳年”。

通过以上四个步骤,我们可以用干支纪年法来计算当前年份的干支组合。

这种计算方法简单而直观,不需要大量的计算,可以方便地计算出任
意年份的干支纪年。

需要注意的是,干支纪年法的起始年份和干支的索引是固定的,因此
计算年份偏移值时要考虑到这一点。

同时,干支纪年法也和公历有所差异,公历的年份是按照阳历计算的,而干支纪年法是按照农历计算的,因此在
计算时可能会有一些误差。

干支纪年法怎么计算 干支纪年法

干支纪年法怎么计算 干支纪年法

干支纪年法一、干支的构成干指天干,共有10个符号甲乙丙丁戊己庚辛壬癸支指地支,共有12个符号子丑寅卯辰巳午未申酉戌亥古人把十天干、十二地支依次排列组合,成为六十个不同的单位。

具体来说,把天干的第一个“甲”和地支的第一个“子”配合,就成了“甲子”;天干的第二个“乙”和地支的第二个“丑”配合,就成了“乙丑”;天干的第三个“丙”和地支的第三个“寅”配合,就成了“丙寅”天干的第十个“癸”和地支的第十个“酉”,就成了“癸酉”。

至此,十个天干已经轮完了一遍,而地支却留有“戌”和“亥”,这时,天干便由“甲”开始继续与地支留下来的两个相配合,组成“甲戌”和“乙亥”。

十二地支第一轮至此也用完,而天干却剩下来从“丙”到“癸”八个,这时天干仍由“丙”继续下去,而地支则由“子”重新开始配合,如此不断,直至“癸亥”,十天支和十二地支刚好同事配完。

六十为一次循环,第六十个单位之后,又轮到第一个单位,周而复始。

因“甲”居十干首位,“子”居十二支首位,故称这个排列为六十甲子。

其中干支名称参差错综,故又称花甲子,后谓年满六十为花甲即由此而来。

表一六十干支、五行、属相对照表天干顺序的单数(奇数)配地支顺序的单数,天干顺序的双数(偶数)配地支的双数,则成为甲子、乙丑、丙寅等,永远不会出现甲丑、乙寅,丙卯等天干单数与地址双数搭配的情况。

二、干支的起源干支的起源及它的数字为什么分别是“十”和“十二”长期以来一直是学者们力图解开的谜。

有些学者试图从上古时代东西方文化的交流渗透来探索干支的起源。

中国古代有以十二辰记月的做法,即以北极为中心,把天穹的大周圆等分为十二个区域。

这种做法与古巴比伦人为观察太阳一年的运行路线而把星空划分为十二个区域(称为“黄道十二宫”)的做法相似。

由此推测中国古代十二支是受巴比伦文化的影响而产生的。

其传入中国的途径,很可能是受商民族“本自西北远来,来时即挟有由巴比伦所授之星历知识,入中土后而沿用之”,或许“商室本发源与东方,其星历知识乃由西来之商贾或牧民所输入”。

如何计算年月日时干支

如何计算年月日时干支

年月日时干支是中国传统历法中使用的一种时间计算方法,主要用于干支纪年、纪月、纪日和纪时。

干支是指天干和地支,共十干十二支,分别表示了不同的年、月、日、时。

下面将详细介绍如何计算年月日时干支。

1.干支纪年:干支纪年是以十天干和十二地支为基础,循环周期为60年。

根据甲子纪年表,可以得到甲子年为第一年,乙丑年为第二年,以此类推。

计算方法如下:-年份除以60,得到的余数对应地支的序号,余数为0时对应地支为第12位。

-年份除以10,得到的余数对应天干的序号,余数为0时对应天干为第10位。

例如,2024年对应的是辛丑年,辛为第8位天干,丑为第2位地支。

2.干支纪月:干支纪月是以天干和地支纪法来计算月份,每年的月份循环周期为12个月。

计算方法如下:-以立春为分界点,立春前为腊月,立春后为正月。

-计算年份的天干位置,例如2024年是辛丑年,辛为第8位,丑为第2位。

-计算立春的干支纪年,例如2024年的立春是在2月3日,即辛丑年的干支纪年为庚寅年。

-计算干支纪月,以立春为始,依次按照干支顺序排列,例如辛丑年的立春前一月为庚子月。

3.干支纪日:干支纪日是根据天干和地支的顺序来编号和计算每一天。

计算方法如下:-天干序号除以十,得到的余数为干日的序号,余数为0时对应干日为第10位。

-地支序号除以十二,得到的余数为支日的序号,余数为0时对应支日为第12位。

例如,2024年1月1日对应的是庚子日,庚为第7位天干,子为第1位地支。

4.干支纪时:干支纪时是在一天24小时的基础上,根据天干和地支的顺序来计算每个时辰的干支。

-从早子时开始,依次按照天干地支的顺序对应到每个时辰。

-例如,早子时对应甲子时,早丑时对应乙丑时,以此类推,晚子时再次对应甲子时。

需要注意的是,以上的计算方法是以农历为基础,对应的公历日期可能会有所不同。

同时也需要考虑到历法的变化和修正。

在实际应用中,通常可以通过查询相关的农历工具或网站来获取具体的干支纪年、纪月、纪日和纪时。

如何用天干地支计算年月日时?

如何用天干地支计算年月日时?

如何用天干地支计算年月日时?中国古代的一种纪年法。

即以甲、乙、丙、丁、戊、己、庚、辛、壬、癸为十干,子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥为十二支,把干、支顺序配合。

如甲子、乙丑等,经过六十年又回到甲子。

周而复始,循环不已。

我国农历现仍沿用干支纪年。

干支纪年萌芽于西汉,始行于王莽,通行于东汉后期。

汉章帝元和二年(公元85年),朝廷下令在全国推行干支纪年。

有人认为中国在汉武帝以前用干支纪年。

可是,这就是太岁纪年,用太岁所在纪年,干支表示十二辰(把黄道附一周天分为十二等分)。

木星11.862年绕天一周,所以太岁约86年多走过一辰,这叫做“超辰”。

在颛顼历上,西汉武帝太初元年(前104年)是太岁在丙子,太初历用超辰法改变为丁丑。

汉成帝末年,由刘歆重新编订的三统历又把太初元年改变为丙子,把太始二年(前95年)从乙酉改变为丙戌。

还东汉的历学者没用超辰法。

所以太岁纪年和干支纪年从太始二年表面一样。

但是用天干和地支搭配纪年的表现方式相传自黄帝时期就开始了,在殷墟商代考古发现过六十甲子表的残片。

1.干和支的含义:干支是天干,地支的合称。

干指天干,共有10个符号:1 2 3 4 5 6 7 8 9 10甲乙丙丁戊己庚辛壬癸支指地支,共有12个符号:1 2 3 4 5 6 7 8 9 10 11 12子丑寅卯辰巳午未申酉戌亥2.干和支组合后用于纪年。

即:将十天干和十二地支按顺序搭配组合成干支,用于纪年。

按此排法,当天干10个符号排了六轮与地支12个符号排了五轮以后,可构成60干支。

续排下去又将恢复原状,周而复始,即如民间所说“六十年转甲子”。

[编辑本段]六十年甲子(干支表)1 2 3 4 5 6 7 8 9 10甲子乙丑丙寅丁卯戊辰己巳庚午辛未壬申癸酉11 12 13 14 15 16 17 18 19 20甲戌乙亥丙子丁丑戊寅己卯庚辰辛巳壬午癸未21 22 23 24 25 26 27 28 29 30甲申乙酉丙戌丁亥戊子己丑庚寅辛卯壬辰癸巳31 32 33 34 35 36 37 38 39 40甲午乙未丙申丁酉戊戌己亥庚子辛丑壬寅癸卯41 42 43 44 45 46 47 48 49 50甲辰乙巳丙午丁未戊申己酉庚戌辛亥壬子癸丑51 52 53 54 55 56 57 58 59 60甲寅乙卯丙辰丁巳戊午己未庚申辛酉壬戌癸亥[编辑本段]结合实际了解“十二地支”1.用十二种动物分别与十二地支相配成为“十二生肖年”。

天干地支纪年月日的计算方法

天干地支纪年月日的计算方法

天干地支纪年(月日时)法一、年的计算方法1、年的天干算法:用公元纪年数减3,除以10(不管商数)所得余数,就是天干所对应的位数;2. 年的地支算法:用公元纪年数减3,除以12(不管商数)所得余数,就是地支所对应的位数;天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥例1. 我们以2010年为例;天干算法: 2010-3=2007, 2007/10=200余7, 7对应天干第7位是庚,即天干为庚;地支算法: 2010-3=2007, 2007/12=167余3, 3对应地支第3位是寅,即地支为寅;综上公元2010是用天干地支纪年为庚寅年。

为使各位信任此算法,本人再举一例来说明:例2. 我们再以1987年为例;天干算法: 1987-3=1984, 1984/10=198余4, 4对应天干第4位是丁,即天干为丁;地支算法: 1987-3=1984, 1984/12=165余4, 4对应地支第4位是卯,即地支为卯;综上公元1987是用天干地支纪年为丁卯年。

二、月的计算方法查表三、日的计算方法查表1、3、5、7、9、11月的日期分别加47、46、47、48、50、51。

2、4、6、8、10、12月的日期分别加18、17、18、19、20、21其中1月和5月一样,2月和6月一样(平年)天干:甲1、乙2、丙3..........壬9、癸0.(个位数)地支:子1、丑2、寅3..........戌11、亥0(除12得的余数)例如:阳历 2010.7.13 7月,日期加48 13+48=61 尾数为1则天干是甲 61/12=5. 余数是1,则地支是1,2010.7.13是甲子日又例:阳历 2010.10.1日 10月,日期加20 1+20=21 尾数是1则天干是甲 21/12=1 余数是9,则地支是9。

2010.10.1是甲申日。

四、时的计算方法。

干支推算法年

干支推算法年

年、月、日、时干支的推算法一、干支结合纪年:干支配合可以用来纪年、月、日、时,都可依据其所属干支的属性来分析这一年、月、日、时的变化大致情况。

在研究子午流注开穴,推演五运六气变化等过程中,都必须掌握年、月、日、时干支。

目前我们采用公元纪年,就需要将公元换算干支,以利应用。

干支纪年,其方法是把每一年配上一个天干和一个地支。

配的方法是天干在上,地支在下,按着干支的顺序依次向下排列。

天干的第一位是甲与地支第一位子相互配合起来便是甲子,这一年就叫甲子年。

从甲子年开始天干和地支相配合,每年不同,天干往复排列六次,地支往复排列五次,共得六十年。

以后又转到甲和子相合,所以每六十年称为一周,或者叫一个甲子。

我们一般把一个快满六十岁的人称为年近花甲,这就是因为六十年是一个甲子的意思。

为了避免临时换算麻烦,现将干支相合一周的次序,排列如后:古代历法,计年月日时皆由甲子开始,——年分十二个月,一日分十二个时辰。

每逢五年有六十个月,五天则有六十个时辰。

为便于记忆,有一首歌诀(见本书二十四页十六行)。

因为甲己、乙庚等皆隔五数,由甲至己周而复始。

甲己之年由甲子月开始,一月是甲子月。

甲己之日由甲子时开始,第一个时辰是甲子时。

乙庚年、日,第一月则为丙子,丙辛年、日,第一月则为戊子,丁壬年、日,第一月则为庚子,戊癸年、日,第一月则为壬子。

年干支的推算法;只要知道1982年是“壬戌”年,即可按干支六十环周顺推,则知1983年为“癸亥”年,倒推1981年为辛酉,1980年为庚申年。

如果不知道当年的干支或任何一年的干支怎么办呢?可采取如下公式:“取当年的年数,减去三,再从余数中除去干支周转数,余下的数字就是所求的年干支的代数。

例如:欲求1982年干支,1982—3:1979÷60(在1979这个数中共有32个60,即干支周转数),余下的59,按六十环顺推,就是“壬戌”,则知1982年干支为壬戌年。

又如:1983(年)—3=1980;以1980÷60(干支周数)=33余0,零表示六十甲子环最后一个,就是癸亥,可知“癸亥”是1983年的干支。

干支纪年法的简便算法

干支纪年法的简便算法

干支纪年法的简便算法(一)干支纪年法的传统算法一.干支纪年是我国传统的纪年方法。

1.干和支的含义:干支是天干,地支的合称。

干指天干,共有10个符号:甲乙丙丁戊己庚辛壬癸支指地支,共有12个符号:子丑寅卯辰巳午未申酉戌亥2.干和支组合后用于纪年。

即:将十天干和十二地支按顺序搭配组合成干支,用于纪年。

按此排法,当天干10个符号排了六轮与地支12个符号排了五轮以后,可构成60干支。

续排下去又将恢复原状,周而复始,即如民间所说“六十年转甲子”。

二.结合实际了解“十二地支”1.用十二种动物分别与十二地支相配成为“十二生肖年”。

(见下图)如凡是含有“子”的干支年,就是“鼠年”,这一年里出生的人都是属“鼠”;凡是含有“丑”的干支年就是“牛年”,这一年进而出生的人都是属“牛”。

以此类推。

(如下表)十二生肖年子鼠丑牛寅虎卯兔辰龙巳蛇午马未羊申猴酉鸡戌狗亥猪2.以十二地支来表示十二时辰。

一日有二十四小时,而我国传统则以十二个时辰来表示,即一时辰是二小时。

(如下表)二十四小时和十二时辰对照表子丑寅卯辰己23-01:01-03:03-05 :05-07:07-09:09-11午未申酉戊亥11-13:13-15:15-17:17-19:19-21:21-231(二)干支纪年法的简便算法传统的计算法,必须知道一个已知年,然后往前后推算,有一定的难度,下面我给大家介绍一种干支纪年法的简便算法,每个字都有对应的一个符号。

如下表:4 5 6 7 8 9 0 1 2 3甲乙丙丁戊己庚辛壬癸4 5 6 7 8 9 10 11 0 1 2 3子丑寅卯辰巳午未申酉戌亥4 5 6 7 8 9 10 11 0 1 2 3虎牛鼠兔龙蛇马羊猴鸡狗猪年份的最后一个数字就对应天干的相应的字,然后用年份除以12所得的余数,用这个余数去找相对应的地支字和十二生肖字,于是天干地支字的组合便是干支纪年,对应的生肖字便是生肖纪年。

如2006年,6对应的天干字是丙字,2006除以12的余数是2,2所对应的地支字是戌字,所对应的生肖字狗字,所以2006年是丙戌年,狗年。

公元后纪年的干支计算法

公元后纪年的干支计算法

公元后纪年的干支计算法是中国古代专门用于纪年的一种方法,也是十二支与十天干相结合的一种纪年法。

它的起源可以追溯到西汉时期,至今已经有两千多年的历史。

干支纪年法在中国历史上广泛应用,不仅在历法上使用,还在文化、祭祀、卜筮等方面有着重要的作用。

在干支纪年法中,十天干按照以下的顺序排列:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。

这十天干是以阴阳五行理论为基础,与地支配合使用,在干支纪年法中扮演重要的角色。

十二地支的排序是:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。

这十二地支按照十二地支时辰表排列,并与天干配合使用,用于干支纪年法的计算。

干支纪年法的计算方法相对简单,通过天干和地支的相配合,即可得到具体年份。

具体方法如下:首先,确定所记年份的公元纪年数,然后根据地支时辰表找到对应的天干,最后将天干和地支相配合,即可得到干支纪年。

例如,我们以2024年为例子,首先,确定2024年是公元纪年,然后根据地支时辰表可知,该年对应的地支是辰。

接下来,在天干中找到与辰相配合的天干是丙。

因此,2024年的干支纪年是丙辰年。

干支纪年法的应用非常广泛,尤其在中国传统文化中扮演着重要的角色。

比如,在农历中,每一年都使用干支纪年法来表示,这对于农耕文化的发展与延续有着重要的意义。

此外,在中国的祭祀活动中,干支纪年法也被广泛应用,用于计算吉日、祭祀时间等。

另外,干支纪年法还常被用于农历生肖的计算,每个属相都与干支纪年法相呼应,用于推算一个人的出生年份和属相。

总之,干支纪年法是中国古代纪年法的一种基础方法。

通过干支纪年法,我们可以追溯历史,计算时间,推算各种重要的日子和出生年份。

它不仅是一种实用的纪年工具,也是中国文化和传统的重要组成部分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

蓝桥杯-代码填空之二
干支纪年法—歌赛新规则—红球多于白球的概率—交换变量—考拉兹猜想—利息计算
①干支纪年法
在我国古代和近代,一直采用干支法纪年。

它采用10天干和12地支配合,一个循环周期为60年。

10天干是:甲,乙,丙,丁,戊,己,庚,辛,壬,癸
12地支是:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥
如果某年是甲子,下一年就是乙丑,再下是丙寅,.癸酉,甲戌,乙亥,丙子,.
总之天干、地址都是循环使用,两两配对。

今年(2012)是壬辰年,1911年辛亥革命
下面的代码根据公历年份输出相应的干支法纪年。

已知最近的甲子年是1984年。

void f(int year)
char* x[] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
char* y[] = {"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};
int n = year - 1984;
while(n0) n += 60;
printf("%s%s", x[_______], y[_______]);
int main(int argc, char* argv[])
f(1911);
f(1970);
f(2012);
return 0;
这道题,最近的一个甲午年(就是对10或者12取模都为0)是1984年,就以它为标准,求模就可以了,
题目中也有对给出的年份小于1984年的处理(n+=60),这题难度,应该很小了。

答案: ?n%10 n%12?
②歌赛新规
歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。

当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?
有人提出:应该去掉与其余的分数平均值相差最远的那个分数。

即“最离群”的分数。

以下的程序用于实现这个功能。

其中x存放所有评分,n表示数组中元素的个数。

函数返回最“离群”的那个分数值。

double score(double x[], int n)
int i,j;
double dif = -1;
double bad;
for(i=0; in; i++)
double sum = 0;
for(j=0; jn; j++)
if(________) sum += x[j];
double t = x[i] - sum - (n-1);
if(t0) t = -t;
if(tdif)
bad = x[i];
printf("%d, %f", i, x[i]);
return bad;
题目很简单,就是求最离群的数字,如果让我打代码,我猜可能是求最大和最小的,然后剩下的求平均,通过它们之间的差值来查找,这题目的做法,应该是,计算n-1个平均值,来比较,所以两层循环,第一层,计算2~n的,第二层计算1,3~n。

所以if里应该是去除掉当前循环的i,对应的值再求和
答案:i!=j
③概率问题
某个袋子中有红球m个,白球n个。

现在要从中取出x个球。

那么红球数目多于白球的概率是多少呢?
下面的代码解决了这个问题。

其中的y表示红球至少出现的次数。

这与前文的问题是等价的。

因为如果取30个球,要求红球数大于白球
数,则等价于至少取出16个红球。

m: 袋中红球的数目
n: 袋中白球的数目
x: 需要取出的数目
y: 红球至少出现的次数
double pro(int m, int n, int x, int y)
if(yx) return 0;
if(y==0) return 1;
if(ym) return 0;
if(x-ny) return 1;
double p1 = _______________________;
double p2 = _______________________;
return (double)m-(m+n) * p1 + (double)n-(m+n) * p2;
刚开始,我以为要直接求出来p1,p2,但是后来一想,不对啊,代码填空题,只给了一个函数,没有给主函数那些,肯定是递归了,再加上题目中给了递归终止的条件,所以肯定是递归了。

知道了递归以后就很简单了:模拟拿球情况,要么拿了一个红球,要么拿了一个白球。

答案:pro(m-1,n,x-1,y-1) ?
pro(m,n-1,x-1,y) ?
④交换变量
如果要把两个整型变量a、b的值交换,一般要采用一个中间变量做过
渡,
但也可以在不借助任何其它变量的情况下完成。

a = _________;b = _________;a = _________;
这道题目,有很多种解法,我这里就给出两种吧,一个是用位运算—?^ ^(异或)是将两边数都转换成2进制,然后异或,
第一种方法:a=a^b,b=a^b,a=a^b
第二种方法就是 ?a=a+b,b=a-b,a=a-b
⑤考拉兹猜想
“考拉兹猜想”(又称3n+1猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想)和“哥德巴赫猜想”一样目前还没有用数学方法证明其完全成立。

在1930年,德国汉堡大学的学生考拉兹,曾经研究过这个猜想,因而得名。

在1960年,日本人角谷静夫也研究过这个猜想。

该猜想的叙述十分简单:从任何一个正整数n出发,若是偶数就除以2,若是奇数就乘3再加1,如此继续下去,经过有限步骤,总能得到1。

例如:17-52-26-13-40-20-10-5-16-8-4-2-1
该猜想虽然没有完全证明,但用计算机验证有限范围的数字却十分容易。

for(int n=2; n=10000; n++)
int m = n;
for(;;)
if(____________)
m = m * 3 + 1;
if( m == 1 )
printf("%d ok! ", n);
这道题,额,看起来很高端大气上档次,猜想也很厉害的样子,但是空就有些。

根据题目所给,遇到偶数时 ?该数除以2,所以答案就是判断m是不是偶数: m%2==0
⑥利息计算
小李年初在银行存款1千元(一年定期)。

他计划每年年底取出100元救助失学儿童。

假设银行的存款利率不变,年利率为3%,年底利息自动计入本金。

下面的代码计算5年后,该账户上有多少存款。

double money = 1000;
int n = 5;
for(i=0; in; i++)
money = _______________;
money -= 100;
printf("%.2f", money);
这道题啊,唉,每年年末,要把本金加上利息都算上再存进去,扣的钱就不需要减了,下面代码帮助你减了。

答案:money=money*1.03
刚开始,我以为要直接求出来p1,p2,但是后来一想,不对啊,代码填空题,只给了一个函数,没有给主函数那些,肯定是递归了,再加上题目
中给了递归终止的条件,所以肯定是递归了。

如果我们仔细观察乘法的计算过程,就会发现实际上对乘积的尾数有贡献的环节,从而不用真正计算出。

相关文档
最新文档