day05 homework

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

thickness=0.08/1000
zhu_height=8848.13
count=0
while thickness<=zhu_height:
    thickness=thickness*2
    count+=1
print(count)

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

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

moth=int(input('请输出入月份:'))
num1=1
num2=1
sum1=0
for x in range(3,moth+1):
    sum1=num1+num2
    temp=num2
    num2=sum1
    num1=temp
print(sum1)

3.将一个正整数分解质因数。例如:90=233*5

num=int(input('请输入一个正整数:'))
for x1 in range(2,num):
    if num%x1==0:
        break
else:
    num=int(input('请输入一个不是素数的正整数:'))
print(num,'=',end='',sep='')
while True:
    for x in range(2,num):
        if num%x==0:
            num=num//x
            print(x,end='*')
            break
    else:
        print(num,end='')
        break

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

m=int(input('请输入正整数m:'))
n=int(input('请输入正整数n:'))
if m>=n:
    if m%n==0:
        print('m,n的最大公约数是:',n)
        print('m,n的最小公倍数是:',m)
    else:
        num=m%n
        n1=n
        while num!=0:
            num1=n%num
            n=num
            num=num1
            print('m,n的最大公约数是:',n)
            print('m,n的最小公倍数是:',m*n1//n)
else:
    if n%m==0:
        print('m,n的最大公约数是:',m)
    else:
        num=n%m
        m1=m
        while num!=0:
            num1=m%num
            m=num
            num=num1
    print('m,n的最大公约数是:',m)
    print('m,n的最小公倍数是:',m1*n//m)

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

for i in range(2,1001): 
    s = i    
    for j in range(1,i):    
        if i % j == 0:    
            s -= j      
    if s == 0:     
        print(i)

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 !=0 :
        day -= 1
    else:
        day -= 2
print("是一年的:",day)

7.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,

加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,

再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值

num=int(input('键入四位数:'))
qian=num//1000
bai=num//100%10
shi=num%100//10
ge=num%10
qian=(qian+5)%10
bai=(bai+5)%10
shi=(shi+5)%10
ge=(ge+5)%10
temp=qian
qian=ge
ge=temp
temp2=bai
bai=shi
shi=temp2
print('加密后的数字是:',qian,bai,shi,ge)

你可能感兴趣的:(day05 homework)