2019-07-29周五周六作业2

1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

h = 0.08 / 1000
moun_h = 8848.13
n = 0
while h < moun_h:
    h *= 2
    n += 1
print(n)
  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
    小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
a = 0
b = 1
c = 0
n = int(input('请输入月数:'))
x = 0
rab = None
while True:
    x += 1
    if 2< x <= n:
        a = b
        b = b + c
        c = a
        rab = a + b
    elif 0 < x < 3:
        rab = 1
    else:
        break
print(rab)
  1. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = int(input('请输入一个正整数:'))
new_num = num
n = 1
num_list = []
if num == 1:
    print('没有质因数')
else:
    while n < num:
        n +=1
        while num % n== 0:
            num_list.append(n)
            num = num // n
            n = 2
print(num_list)
  1. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数

6.输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,
然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

year = int(input('请输入年份:'))
mouth = int(input('请输入月份:'))
day = int(input('请输入号数:'))

mouth_list1 = [1,3,5,7,8,10,12]
mouth_list2 = [4,6,9,11]
mouth_list3 = [2]

m = 0
n = 0
b = 0
a = 28
if (year % 4 ==0 and year %100 !=0) or year % 400 == 0:
    a = 29
for x in mouth_list1:
    if x < 8:
        if x < mouth:
            if x % 2 != 0:
                m += 1
    elif mouth == 9 or mouth == 10:
        m = 5
    elif mouth > 10:
        m = 6
for y in mouth_list2:
    if y < 8:
        if y < mouth:
            if y % 2 == 0:
                n += 1
    elif mouth == 11:
        n = 3
    elif mouth == 12:
        n = 4
# if mouth > 2:
    b = 1
else:
    b = 0
sum = day + m * 31 + n * 30 + a*b
print(sum)
  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,
    加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,
    再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
  1. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数
    6 =1* 23 -> 丑数
    2 = 1
    2 -> 丑数
    7 = 1*7 -> 不是丑数
    1, 2, 3, 4, 5, 6, 8,9,10, 12 ….

这个函数作用是:num_list=[质因数]

def zhiyinshu_list(num):
    n = 1
    num_list = []
    if num == 1:
        print('没有质因数')
    else:
        while n < num:
            n +=1
            while num % n== 0:
                num_list.append(n)
                num = num // n
                n = 2
    print(num_list)
zhiyinshu_list(18)

你可能感兴趣的:(2019-07-29周五周六作业2)