Day05.作业

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

high = 8838.13*1000
n = 0
num = 0.08
while num < high:
    n +=1
    num *=2
print(num,n)

2.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到

第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

当月兔子数 = 上一个月的兔子数(已有兔子对数)+ 两个月前的兔子数(能生的兔子对数):斐波那契数列

n=int(input('请输入n的值:'))
sum2=1
sum3=1
for x in range(n-2):
    sum1 = sum2
    sum2 = sum3
    sum3 = sum2 + sum1
print(sum3)

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

n=int(input('请输入正整数:'))
print(n,'=',end='\000')
for x in range(2,n):
    for x in range(2,n):
        if n % x==0:
            num1 = x
            n = n // x
            print(num1,'*',end='\000')
            break
print(n)        

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

m=int(input('请输入正整数m:'))
n=int(input('请输入正整数n:'))
for x in range(1,n+1):
        if n % x==0:
            if m % x == 0:
                num1 = x
print(m,'和',n,'的最大公约数为:',num1)

num2 = m*n/num1
num2=int(num2)
print(m,'和',n,'的最小公倍数为:',num2)

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

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

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

year=int(input('请输入年:'))
month=int(input('请输入月:'))
day=int(input('请输入日:'))
if ((not year % 4) and (year % 100)) or (year % 400) == 0:
    if 2 < month < 8:
        days = (month-1)*30 + int(month/2)-1 +day
    elif month <= 2:
        days = (month-1)*30 + int(month/2)+day 
    else:
        days = (month-1)*30 + int((month+1)/2)-1 +day
    print('闰年') 
else:
    if 2 < month < 8:
        days = (month-1)*30 + int(month/2)-2 +day
    elif month <= 2:
        days = (month-1)*30 + int(month/2)+day 
    else:
        days = (month-1)*30 + int((month+1)/2)-2 +day
    print('不是闰年')
print(days)

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

num = int(input('请输入四位正整数:'))
n = [0,0,0,0]
for x  in range(4):
    n[x] = num % 10
    num = num // 10
m = 0
num1 = 0
for x in n:
    x = (x+5) % 10
    num1 += x*10**(3-m)
    n[m] = x
    m +=1

print(num1)

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