|
发表于 2018-1-17 13:33:18
|
显示全部楼层
题目本身没有说年月日都是质数,因此两种方法都做了一下。
方法一:分解质因数(只适用于年月日都是质数的情况)
- day = 319907
- k = 2
- l1 = []
- while k <= day:
- if k == day:
- l1.append(k)
- break
- elif day % k == 0:
- l1.append(k)
- day = day/k
- else:
- k += 1
- print(l1)
复制代码
结果:[7, 23, 1987]
方法二:输入任意年月日的乘积(1900年1月1日至今),输出可能的年月日组合
- import datetime
- day = 360000
- start = datetime.date(1900, 1, 1)
- today = datetime.date.today()
- date_list = []
- for y in range(start.year, today.year + 1):
- if day % y == 0:
- m_d = day / y
- if (y % 100) != 0 or (y % 400) == 0: # 判断是否是闰年
- is_leap_year = True
- else:
- is_leap_year = False
- for m in range(1, 13):
- if m_d % m == 0 and m_d/m <= 31:
- if m in [2, 4, 6, 9, 11] and m_d/m > 30: # 小月不大于30
- continue
- elif m == 2 and is_leap_year and m_d/m > 29: # 闰年2月,大于29号的结果舍去
- continue
- elif m == 2 and not(is_leap_year) and m_d/m > 28: # 平年2月,大于28号的结果舍去
- continue
- else:
- date_list.append([y, m, round(m_d/m)])
- for d in date_list:
- print('-'.join([str(i) for i in d]))
复制代码
结果:
2000-6-30
2000-9-20
2000-10-18
2000-12-15 |
|