day5-作业

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

n = 0
while True:
    n += 1
    a = (1/1000)*0.08
    if a*2**n >= 8848.13:
        print(n)
        break

2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

pre_1 = 1
pre_2 = 1
n = int(input('第几个月:'))
current = pre_1+pre_2
if n == 1 or n == 2 or n == 3:
    current = 1
for x in range(n-3):
    current = pre_1+pre_2
    pre_2 = pre_1
    pre_1 = current
print(current)

3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

while True:
    n = int(input('请输入一个整数:'))
    print('n = ', end='')
    while n > 1:
        for i in range(2, n+1):
            if n % i == 0:
                n = int(n/i)
                if n == 1:
                    print('%d' % i, end='')
                else:
                    print('%d*' % i, end='')
                break
    print()
    break

4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。

m = int(input('====:'))
n = int(input('====:'))
if m > n:
    for x in range(n, 0, -1):
        if m % x == 0 and x % n == 0:
            print('%d是最大公约数'  '%d是最小公约数' % (x, m*n/x))
            break
if m < n:
    for x in range(m, 0, -1):
        if n % x == 0 and m % x == 0:
            print('%d是最大公约数'  '%d是最小公约数' % (x, m*n/x))
            break

5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数

for x in range(1, 1000):
    sum1 = 0
    for y in range(1, x):
        if x % y == 0:
            sum1 += y
    if sum1 == x:
        print(x)

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

7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值

m = int(input('输入一个四位数:'))
a = (m // 1000 + 5) % 10
b = (m // 100 + 5) % 10
c = (m // 10 + 5) % 10
d = (m % 10 + 5) % 10
e = a
f = b
g = c
h = d
print(h, c, b, a)

8. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数

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