作业4-20(day5)

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

a = 8848130
b = 0.08
c = 0
while a >= b:
    b *= 2
    c += 1
print(c)
  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
a = 1
b = 1
c = 0
n = 6
for x in range(0,n):
    a = b
    b = c
    c = a + b
    print(c)
  1. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
a = 90
print('a=',end='')
while True:
    for x in range(2,int(a+1)):
        if a % x == 0:
            b = a / x
            a = b
            print(x,'x',end='')
            break
    else:   
        print(a)
        break
  1. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
#最大公约数
m = 36
n = 12
r = 0
s = 0
for x in range(2, n+1):
    if (m % x == 0) and (n % x == 0):
        r = m
        m = n
        n = r
        s = x
        continue
print(s)

# 最小公倍数
m = 30
n = 15
r1 = 0
for x in range(2,n+1):
    r1 = m % n
    if r1 == 0:
        m = n
        n = r1
        r1 = m
        break
print(r1)
  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
for n in range(1,1000):
    m = 0
    for x in range(1,n):
        if n % x == 0:
            m += x
            if n == m:
                print(n, end=' ')

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

year = int(input('请输入年:'))
month = int(input('请输入月:'))
day = int(input('请输入日:'))
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
    if month <= 8:
        a = 31*(month // 2)
        b = 30*((month - 1) // 2)
        s = a + b + day - 1
        print('是', year,'年的第', s, '天')
    else:
        a = 31*((month + 1) // 2)
        b = 30*((month - 2) // 2)
        s = a + b + day - 1
        print('是', year,'年的第', s, '天')
else:
    if month <= 8:
        a = 31*(month // 2)
        b = 30*((month - 1) // 2)
        s = a + b + day - 1
        print('是', year,'年的第', s, '天')  
    else:
        a = 31*((month + 1) // 2)
        b = 30*((month - 2) // 2)
        s = a + b + day - 1
        print('是', year,'年的第', s, '天')
  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
a = 1010
a1 = a // 1000
a2 = a // 100 % 10
a3 = a % 100 // 10
a4 = a % 10
b1 = (a1 + 5) % 10
b2 = (a2 + 5) % 10
b3 = (a3 + 5) % 10
b4 = (a4 + 5) % 10
b1, b4 = b4, b1
b2, b3 = b3, b2
print(b1, b2, b3, b4)

8.获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数
6 =1* 23 -> 丑数
2 = 1
2 -> 丑数
7 = 1*7 -> 不是丑数
1, 2, 3, 4, 5, 6, 8,9,10, 12 ….

n = 7
i = 1
count = 0
while True:
    t = i
    while t % 2 == 0:
        t = t / 2
    while t % 3 == 0:
        t = t / 3
    while t % 5 == 0:
        t = t / 5
    if t == 1:
        count += 1
    if count == n:
        break
    i += 1
print(i)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容