day5-作业

day5-作业


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

high = 0.08
height = 8848130
count = 0
while True:
    high *= 2
    count += 1
    if high >= height:
        break
print('对折%d次' % count)

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

num1, num2 = 0, 1
n = 10
for _ in range(n):
    num1, num2 = num2, (num1 + num2)
print(num1)

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

n = 90
result = '%d=' % n
for x in range(2, n):
    while n % x == 0:
        result += str(x)+'x'
        n //= x
print(result[:-1])

4. 输入两个正整数m和n,求其最大公约数和最小公倍数

m = 10
n = 15
gcd = 0
for i in range(2, m):
    if m % i == 0 and n % i == 0:
        gcd = i
print('最大公约数是%d' % gcd)
m1 = m / gcd
n1 = n / gcd
lcm = gcd * m1 * n1
print('最小公倍数是%d' % lcm)

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

for n in range(2, 1001):
    sum1 = 0
    for x in range(1, n):
        if n % x == 0:
            sum1 += x
    if n == sum1:
        print(n)

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

year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
day = int(input('请输入天数:'))
day += (month - 1) * 30
if month < 9:
    day += month // 2
else:
    day += (month + 1) // 2
if month > 2:
    if year % 400 == 0 or (year % 4 == 0 and year % 100):
        day -= 1
    else:
        day -= 2
print('这是今年的第%d天' % day)

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

num = 2563
a = (num % 10 + 5) % 10
b = (num // 10 % 10 + 5) % 10
c = (num // 100 % 10 + 5) % 10
d = (num // 1000 + 5) % 10
a, b, c, d = d, c, b, a
print(a, b, c, d)

8. 获取第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('请输入你想获得的第几个丑数:'))
num_list = [1]
i2 = i3 = i5 = 0
while len(num_list) < n:
    num2, num3, num5 = num_list[i2] * 2, num_list[i3] * 3, num_list[i5] * 5
    num = min(num2, num3, num5)
    if num == num2:
        i2 += 1
    if num == num3:
        i3 += 1
    if num == num5:
        i5 += 1
    num_list.append(num)
print(num_list[-1])

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