day05

作者: 运算符 | 来源:发表于2019-04-19 21:03 被阅读0次
    一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
    n = 0
    h = 0.00008
    while h < 8848.13:
        h *= 2
        #print(h)
        n += 1
    print(n)
    
    2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    
    
    3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
    n = 123
    print(n,"=",end=" ")
    while True:
        for x in range(2,int(n**(1/2))+1):
            if n % x == 0:
                n //= x
                print(x,end="x")
                break
        else:
            print(n)
            break
    
    4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
    m = int(input("请输入一个正整数:"))
    n = int(input("请输入另一个正整数:"))
    sum = m * n
    t = 0
    if n > m:
        t = m
        m = n
        n = t
    while m % n != 0:
        s = m % n
        m = n
        n = s
    print("最大公因数:", n)
    print("最小公倍数:", sum/n)
    
    5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
    for num in range(1, 1001):
        sum = 0
        for x in range(1, num):
            if num % x == 0:
                sum += x
                #print("sum=",sum)
        if sum == num:
            print(num)
    
    6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
    year = int(input("请输入年份:"))
    month = int(input("请输入月份:"))
    day = int(input("请输入日数:"))
    sum = 0
    if month == 1:
        sum = day
    elif month == 2:
        sum = day + 31
    elif month == 3:
        sum = day + 59
    elif month == 4:
        sum = day + 90
    elif month == 5:
        sum = day + 120
    elif month == 6:
        sum = day + 151
    elif month == 7:
        sum = day + 181
    elif month == 8:
        sum = day + 212
    elif month == 9:
        sum = day + 243
    elif month == 10:
        sum = day + 273
    elif month == 11:
        sum = day + 304
    else month == 12:
        sum = day + 334 
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        if month >= 3:
            sum += 1
    print(sum)
    
    7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
    num = int(input("请输入一个四位整数:"))
    n = num // 1000
    while n <= 0 or n > 9:
        num = int(input("请重新输入一个四位整数:"))
        n = num // 1000
    q_wei = num // 1000
    b_wei = num // 100 % 10
    s_wei = num // 10 % 10
    g_wei = num % 10
    
    q_wei, b_wei, s_wei, g_wei= (q_wei+5)%10, (b_wei+5)%10, (s_wei+5)%10, (g_wei+5)%10
    q_wei, g_wei = g_wei,q_wei
    b_wei, s_wei = s_wei, q_wei
    
    print(str(q_wei)+str(b_wei)+str(s_wei)+str(g_wei))
    
    8. 获取第n个丑数。 什么是丑数: 质数因子只包含2,3,5的数

    6 =1* 23 -> 丑数
    2 = 1
    2 -> 丑数
    7 = 1*7 -> 不是丑数
    1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, 30, 32, 36 ….

    n = int(input("请输入第几个丑数:"))
    x = 1 
    count = 0
    while True:
        temp = x
        while temp % 2 == 0:
            temp //= 2
        while temp % 3 == 0:
            temp //= 3
        while temp % 5 == 0:
            temp //= 5
        if temp == 1:
            count += 1
        if count >= n:
            break
        x += 1
    print(x)
    

    相关文章

      网友评论

          本文标题:day05

          本文链接:https://www.haomeiwen.com/subject/buecgqtx.html