day5-作业

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

high = 0.00008
count = 0
while True:
    high *= 2
    count += 1
    if high >= 8848.13:
        print("对折{}次".format(count))
        break
  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
    小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
tu = [1,0]
n = int(input("请输入最大月份:"))
sum = 0
if n >= 3:
    for i in range(n-2):
        sum += tu[i]
        tu.append(sum)
for i in range(n):
    sum = 0
    for j in range(i+1):
        sum += tu[j]
    print("第{}个月的兔子数为{}只".format(i+1,sum*2))
  1. 将一个正整数因分解质数。例如:输入90,打印出90=2x3x3x5。
import math
zhishu = []
sum = 1
def Fenjie(n):
    if n <= 3:
        zhishu.append(n)
        return
    else:
        m = math.floor(math.sqrt(n))+1
        flag = 0
        for i in range(2,m):
            if n%i == 0:
                zhishu.append(i)
                Fenjie(n/i)
                flag = 1
                break
        if flag == 0:
            zhishu.append(n)
            return
n = int(input("请输入一个正整数:"))
Fenjie(n)
print('{}='.format(n), end = '')
lenth = len(zhishu)
for i in range(lenth):
    sum *= zhishu[i]
    if i+1 < lenth:
        print("{}x".format(int(zhishu[i])), end = '')
    else:
        print("{}".format(int(zhishu[i])))
  1. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
m = int(input("请输入正整数m:"))
n = int(input("请输入正整数n:"))
ji = m*n
while n != 0:
    m, n = n, m%n
print("最大公约数为:{}".format(m))
print("最小公倍数为:{}".format(int(ji/m)))

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

for i in range(1,1001):
    sum = 0
    for j in range(1, i):
        if i%j == 0:
            sum += j
    if i == sum:
        print("完数",i)

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

month1 = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month2 = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入天数:"))
sum = 0
if year%400 == 0 or (year%4 == 0 and year%100 != 0):
    for i in range(1,month):
        sum += month2[i]
    print("{}年{}月{}日是这一年的第{}天".format(year,month,day,sum+day))
else:
    for i in range(1,month):
        sum += month1[i]
    print("{}年{}月{}日是这一年的第{}天".format(year,month,day,sum+day))

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

n = int(input("请输入一个四位正整数:"))
a = n%10
b = n//10%10
c = n//100%10
d = n//1000%10
a = (a+5)%10
b = (b+5)%10
c = (c+5)%10
d = (d+5)%10
print("加密后的值为:{}".format(a*1000+b*100+c*10+d))
  1. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数

    6 =1* 2*3 -> 丑数

    2 = 1*2 -> 丑数

    7 = 1*7 -> 不是丑数

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

m = int(input("请输入您要获取的第几个丑数:"))
flag = 0
count = 1
n = 2
while m - count:
    for i in range(2, n+1):
        if n % i == 0:
            if i == 2 or i == 3 or i == 5:
                flag = 1
            else:
                count1 = 2
                for j in range(2,i):
                    if i % j != 0:
                        count1 += 1
                if count1 == i:
                    flag = 0
                    break
    if flag == 1:
        count += 1
    n += 1
    flag = 0
if m == 1:
    print(1)
else:
    print(n-1)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。