day05作业

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

n = 0.08
i = 0
while n/1000<8818.13:
    n *= 2
    i += 1
print(i)

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

n = int(input("输入第几个月: "))
m = 0
for i in range(1, n+1, 3):
    m += 1
print("第",n,"个月有",2**m,"只兔子")

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

num = int(input("输入一个正整数: "))
print(num,end='=')
n = 2
for i in range(2, num):
    if num%n == 0:
        print(n,end='')
        n = 2
        num = num//n
        if num == 1:
            break
        else:
            print('*')
            continue
    else:
        n += 1
        continue

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

m = int(input("输入m: "))
n = int(input("输入n: "))
max = 

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


a = 2
half = 0        #为此时计算数字的一半
MyList = []     #保存不是素数的所有分解因子
flag = False    #判断是否有分解因子  False为素数  True表示有分解因子
sum = 0
while a<=1000:
    half = a//2
    while half>=1:
        if a%half == 0:  #找到一个分解因子
            MyList.append(half)     #将分解因子存入数组中
            flag = True
        half = half-1   #将half减一,一直进行while循环找出所有的分解因子
    if flag==True:
        for x in MyList:        #将所有因子相加
            sum += x
        if sum == a:     #说明是完数
            print(a,'是一个完数。分解因子为:')
            for y in MyList:        #输出所有的分解因子
                print(y,end=' ')
            print('\n')
    a += 1      #判断完一个数以后,将相关条件都重置
    MyList = []    
    flag = False
    sum=0

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

year = int(input("请输入年分:"))
month = int(input("请输入月份:"))
day = int(input("请输入日:"))

print("-" * 20)
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("是一年的第%d天"%day)

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

num1 = int(input("请输入四位的整数: "))
a = num1//1000 + 5
b = num1//100%10 + 5
c = num1//10%10 + 5
d = num1%10 + 5

a, d = d%10, a%10
b, c = c%10, b%10
print(a,b,c,d,sep='')

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