doy5-homework

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

h=0.00008
H=0
t=0
while H<8848.13:
H=h*2
h=H
t+=1
print('对叠次数:',t)

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

n=6
n_1=1
n_2=0
s=1
for i in range (1,n-1):
n_2=n_1
n_1=s
s=n_1+n_2
print(s)

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

num = 90
print(num,'=',end='')
while num % 2 == 0 and num > 2: # 判断2是否是质因数
print(2,'x',end='')
num = num // 2

for i in range(2,num):
for j in range(2,i):
if i % j == 0:
break
elif j == i-1:
while num % i == 0 and num > i:
print(i,'x',end='')
num = num // i
print(num)

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

m = int(input('输入第一个正整数:'))
n = int(input('输入第二个正整数:'))
x = m
y = n
if m < n:
temp = m
m = n
n = temp
c = m % n
while c != 0:
m = n
n = c
c = m % n

c = x*y/n
print('最大公约数为%d,最小公倍数为%d'%(n,c))

5. 一个数如果恰好等于它的因子之和,

这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数

count = 0
for i in range(1000): # 遍历1000内的数
s = i
for j in range(i-1,0,-1): # 从最大因子到1找完数,
if s % j == 0:
i -= j
if i == 0 and j == 1: # j==1为了排除24
print(s,'是完数')
count += 1
break
print('有%d个完数'%count)

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: # 闰年
for i in range(1,month):
if i==1 or i==3 or i==5 or i==7 or i==8 or i==10 :
sum += 31
elif i==4 or i==6 or i==9 or i==11:
sum += 30
elif i == 2:
sum += 29
else:
for i in range(1,month):
if i==1 or i==3 or i==5 or i==7 or i==8 or i==10 :
sum += 31
elif i==4 or i==6 or i==9 or i==11:
sum += 30
elif i == 2:
sum += 28
print('这是%d年的第%d天' %(year,sum+day))

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

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

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

num = int (input('输入一个四位整数:'))
ge = num % 10
shi = num // 10 % 10
bai = num // 100 % 10
qian = num // 1000
print(ge,shi,bai,qian)
ge = (ge+5)%10
shi = (shi+5)%10
bai = (bai+5)%10
qian = (qian+5)%10
temp1 = ge
ge = qian
qian = temp1
temp2 = bai
bai = shi
shi =temp2
print(qian,bai,shi,ge,sep='')

8.获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数

6 =1* 2*3 -> 丑数

2 = 1*2 -> 丑数

7 = 1*7 -> 不是丑数

1, 2, 3, 4, 5, 6, 8,9,10, 12 …

n = int (input('想要获取第几个丑数:'))
n1 = n
if n == 1:
print('第1个丑数是1')
for i in range(2,1000):
x = i
while True:
if i % 2 == 0:
i = i // 2
elif i % 3 == 0:
i = i // 3
elif i % 5 == 0:
i = i // 5
else:
break

    if   i == 1: # 是丑数
        n -=1
        break
if   n == 1:
    print('第%d个丑数是:%d' %(n1,x))
    break

你可能感兴趣的:(doy5-homework)