题目1: 输入年月日,输出星期几?
题目2:输入两个数,输出最大公约数与最小公倍数。
问题1算法描述:
蔡勒(Zeller)公式:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
蔡勒公式中的符号含义如下:
w:星期;
c:世纪;
y:年(两位数);
m:月(m大于等于3,小于等于14,即在蔡勒公式中,
某年的1、2月要看作上一年的13、14月来计算,
比如2003年1月1日要看作2002年的13月1日来计算);
d:日;
[]代表取整,即只要整数部分。
(C是世纪数,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和14月来算,
这时C和y均按上一年取值。)
算出来的W除以7,余数是几就是星期几。如果余数是0,则为星期日。
问题2算法描述:
利用辗转法(欧几里得算法)求最大公约数 greatest common divisor (gcd)
前提条件a>b
1. a ÷ b,令r为所得余数(0≤r<b)
若 r = 0,算法结束;b 即为答案。
2. 互换:置 a←b,b←r,并返回第一步。
在完成上步后可以利用如下公式来求最小公倍数 least common multiple (lcm)
lcm = a*b/gcd