day5_作业

1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
a = 0.08*10**-3
b = 1
while True:
    if a * 2 ** b >= 8848.13:
        break
    else:
        b +=1
print(b)
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
n = int(input("请输入想看哪个月的兔子总数"))
a = 0
b = 1
for x in range(1, n):
    a, b, = b, a + b
print(b)
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
n = int(input("请输入一个正整数"))
# a = 0
# b = 0
# c = 0
d = n
resut = ''
# print(n, '= 1', end='')
while True:
    if n % 2 == 0:
        # print('*2', end='')
        resut += '*2'
        # a += 1
        n /= 2
    elif n % 3 == 0:
        # print('*3', end='')
        resut += '*3'
        # b += 1
        n /= 3
    elif n % 5 == 0:
        # print('*5', end='')
        resut += '*5'
        # c += 1
        n /= 5
    elif n % 7 == 0:
        # print('*7', end='')
        resut += '*7'
        # c += 1
        n /= 7  
        break
print('%d = %s' % (d, resut[1:]),"*",int(n),sep="")
**********************************
n = int(input("请输入一个正整数"))
i = 2
print(n,"=",1,end="",sep="")
while True:
    if n % i == 0:
        if n // i == 1:
            print("*",i,sep="")
            break
        print("*",i,sep="",end="")
        n = n / i
    else:
        i += 1


4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m = int(input('请输入第一个正整数'))
n = int(input('请输入第二个正整数'))
for a in range(2):
    if m > n:
        i = m
        for x in range(n,0,-1):
            if m % x == 0 and n % x ==0:
                break
        while True:
            if i % m ==0 and i % n == 0:
                break       
            i+=1
    else:
        m, n = n, m
print("最大公因数",x)
print("最小公倍数",i)
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for x in range(1,1001):
    sum1 = 0
    for i in range(1,x):
        if x % i == 0:
            sum1 +=i
    if x == sum1 :
        print(x)
6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
y = int(input("输入年份"))
m = int(input("输入月份"))
d = int(input("输入日期"))

if y > 0 and  (0 < m <= 12) and ((m == 1, 3, 5, 7, 8, 10, 12) \
    and (0< d <= 31)) and((m == 2, 4, 6, 9, 11) \
    and ( 0 < d <= 30)):
    if (y % 4 == 0 and y % 100 != 0) or (y %400 == 0):
    # 闰年

        if m == 1:
            print("这是", y, "年的第", d, "天 ", sep="")
        elif m == 2:
            if 0 < d <= 29:
                print("这是", y, "年的第", d+31, "天 ", sep="")
            else:
                print("请正确输入")
        elif 2< m <= 8:
            d = m // 2 +(m - 1) * 30 - 1 + d
            print("这是", y, "年的第", d, "天 ", sep="")
        else:
            d = (m + 1) // 2 +(m - 1) * 30 - 1 + d
            print("这是", y, "年的第", d, "天 ", sep="")
    else:
        if m == 1:
            print("这是", y, "年的第", d, "天 ", sep="")
        elif m == 2:
            if 0 < d <= 28:
                print("这是", y, "年的第", d+31, "天 ", sep="")
            else:
                print("请正确输入")
        elif 2< m <= 8:
            d = m // 2 +(m - 1) * 30 - 2 + d
            print("这是", y, "年的第", d, "天 ", sep="")
        else:
            d = (m + 1) // 2 +(m - 1) * 30 - 2 + d
            print("这是", y, "年的第", d, "天 ", sep="")
else:
    print("请正确输入")

7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
n = int(input("请输入一个四位整数"))
# a1 = n % 10
# a2 = a1 % 10
# a3 = a2 % 10
# a4 = a3 % 10
# a1 = (a1 + 5) % 10
for x in range(4):
    print((n % 10 +5) % 10,end="")
    n //= 10
  1. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数

    6 =1* 2*3 -> 丑数

    2 = 1*2 -> 丑数

    7 = 1*7 -> 不是丑数

    1, 2, 3, 4, 5, 6, 8,9,10, 12 ….

n=int(input("请输入想获取第几个丑数"))
i=0
a = 0
x = 0
while x < n:
    i+=1
    a = i
    for c in range(2,6):
        while  a % c == 0:
            a /= c  
    if a != 1:  
        x-=1    
    x+=1    
print(i)

你可能感兴趣的:(day5_作业)