DAY5作业

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

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

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

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

year = int(input('请输入年:'))
month = int(input('请输入月:'))
day = int(input('请输入天:'))
sum = 0
if (year%4 ==0 and year%100 !=0) or (year % 400 ==0):
    if month<=2:
        sum=(month-1)*31+day
        print('第',sum,'天')
    else:
        sum=29
        for month in range(3,month+1):
            if month%2 ==0:
                sum+=30
                continue
            else:
                sum+=31
                continue
        if month<8:
            sum += day
        else:
            sum = sum+day+1
        print('第',sum,'天')
else:
        if month<=2:
            sum=(month-1)*31+day
            print('第',sum,'天')
        else:
            sum=28
            for month in range(3,month+1):
                if month%2 ==0:
                    sum+=30
                    continue
                else:
                    sum+=31
                    continue
            if month<8:
                sum += day
            else:
                sum = sum+day+1
            print('第',sum,'天')
  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
num = int(input('请输入四位正整数:'))
i =3
sum =0
for x in range(1,5):
    a =((num%10+5)%10)*(10**i)
    num = num //10
    i-=1
    sum+=a
print(sum)

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