第一周周末作业

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

思路:
一张纸对折之后,可以视为纸张数X2。

n = 8
count = 0
while True:
    n = 2*n
    if n > 88481200:
        break
    count += 1
print('对折',count,'次达到珠穆朗玛峰高度')

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


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

while True:
    print('\n======求质因数运算======\n')
    n = int(input('请输入你想查询的数字:'))
    num = n 
    print(n,'=',end= '')
    while True:
        i=2
        while num/i > int(num/i):#判断因数能否被整除,如果
            i += 1          
            continue
        else:           #能被整除的数,再从2~(num/i-1)进行因素提取操作。
            print(i,end='')#先打印出一个质因数
            num = num/i #取出非质因数的数再继续判断
            if num < 2 :#如果最后数字小于2不需要判断
                break
            print('*',end= '')
    print()

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

print('\n======最大公约数判断======\n')
m = int(input('enter number a:'))
n = int(input('enter number b:'))
if m<n:
    m,n = n,m
print('==================\n')
while m/n >= 1:#判断m,n谁更大。方便做最大公约数计算。
        yu = m % n 
        if yu == 0:
            print(n,'是最大公约数')
            break
        else:
            m,n = n,yu
print()


print('\n======最小公倍数判断======\n')
while True:
    print('\n======最小公倍数判断======\n')
    number_1 = int(input('enter number a:'))
    number_2 = int(input('enter number b:'))
    m = number_1    #后面求公因数需要将数字小化,为了不影响原来输入的值,做替换
    n = number_2
    if m<n:
        m,n = n,m  #调换一下大小顺序,可以避免分情况再去运算,也不影响结果。
    print('==================\n')
    if m / n == int(m/n):#用于判断较小的数是否能被较大的数整除,若能整除,那么最大公倍数就是数字大的那一个
        print('最小公倍数是:',m)   #找到最大公倍数,结束。
    else:
        i = 2       #从2开始取出两个数共同的质因数
        zxgbs = 1   #最小公倍数
        while True:
            while n > i and (m % i == 0 and n % i == 0):
                print('\n当前公约数判定值是:',i,'\n')
                n /= i
                print('\n当前较小的数值是:',n,'\n')
                m /= i
                print('\n当前较大的数值是:',m,'\n')
                zxgbs *= i
                print('\n当前最小公倍数值是:',zxgbs,'\n')
                i += 1
            zxgbs *= m*n
            break
        print(number_1,',',number_2,'最大公倍数为:',zxgbs)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容