美文网首页Python全栈工程师
7.3-菲波那锲数列、素数、猴子吃桃问题

7.3-菲波那锲数列、素数、猴子吃桃问题

作者: BeautifulSoulpy | 来源:发表于2019-08-08 20:38 被阅读1次

    算法有优劣之分;能写出来记行;

    总结:
    1.质数问题:记住几个优化的点;
    2.fb数列问题;
    3.三元表达式的引用会使得代码非常简洁;
    
    质数,fb ,猴子偷桃,计算器的实现
    
    练习1: 求100以内的 菲波那锲数列 fb(笔试/上机题); 后一项 = 前两项的和
    #思路1:用循环来写;
    a = 0,b = 1
    print(0,a)
    print(1,b)
    i = 2 
    while True:
        c = a + b
        if c > 100:
            break
        print(i,c)
        a = b
        b = c
        i +=1
    -----------------------------------------------------
    0 0
    1 1
    2 1
    3 2
    4 3
    5 5
    6 8
    7 13
    8 21
    9 34
    10 55
    11 89
    变体:求斐波那契数列的101项;
    
    
    练习5:求10万内的所有素数(质数);prime number 9592个

    质数:(经典面试题目)考验一个人的算法能力,关于算法的几个优化点必须掌握;
    应用于密码学领域,是因为质数计算难度大;

    思路1:先算是否为质数,再看边界问题
    m=int(input('>>>'))
    print(1)
    #n=100
    for n in range(2,m):
        for i in range(2,n):
            if n%i == 0:
                break
        else:
            print(n)
    --------------------------------------------
    >>>100
    1
    2
    3
    5
    7
    .
    .
    83
    89
    97
    
    思路2:大大减少循坏次数
    # 简化方案
    print(2)
    for x in range(3,100,2):
        for i in range(3,int(x**0.5)+1,2):
            if x % i == 0:
                break
        else:
            print(x)
    
    总结:
    1.加法的中点再正中间;
    2.乘除法的重点在开方处;  X**0.5  
    3.大于10的质数;个位一定是 1,3,7,9  
    
    思路3:  大于10的质数;个位一定是 1,3,7,9  
    print(2)
    for x in range(3,100,2):    # 一定要记住左边界都为3,舍弃所有的偶数;
        if x > 10 and x % 5 == 0:
            continue
        for i in range(3,int(x**0.5)+1,2):   #为什么到一个数的一半就行了?
            if x % i == 0:
                break
        else:
            print(x)
    一定要记住左边界都为3,舍弃所有的偶数;
    为什么到一个数的一半就行了?
    
    #思路3:质数定理:
    
    

    datetiem模块

    导入datetime模块,显示当前日期:

    import datetime
    
    x = datetime.datetime.now()
    
    print(x.year)
    print(x.strftime("%A")
    y = datetime.datetime.now()
    
    #timedelta对象; (datetime.datetime.now()-start)
    dalta[0]=(datetime.datetime.now()-start).total_seconds()
    计算程序运行的时间;
    ------------------------
    
    
    练习6:猴子吃桃子问题;
    #练习6:猴子吃桃子问题;
    
    peach = 1
    
    for i in range(9):
        peach = 2*(peach+1)
    print(peach)
    -------------------------
    1534
    

    练习7. 实现一个简易的计算器,效果如下:
    (1). 运行后提示让用户输入一个数字
    (2). 提示输入操作符(+ - * /)
    (3). 再次提示输入一个数字
    (4). 打印计算结果
    (5). 在不退出程序的前提下,可以允许用户继续输入新一组数据计

    ###计算器的实现:
    
    flag = True
    while flag:
        num1 = int(input('输入first number:'))
    
        choice = input('输入操作符(+ - * /):')
    
        num2 = int(input('输入second number:'))
    
        if choice == '+':
           print(num1,"+",num2,"=", num1+num2)
    
        elif choice == '-':
           print(num1,"-",num2,"=", num1-num2)
    
        elif choice == '*':
           print(num1,"*",num2,"=", num1*num2)
    
        elif choice == '/':
           print(num1,"/",num2,"=", num1/num2)
    
        else:
           print("非法输入")
        print('是否继续使用计算?')
        idea = input('>>>')
        if idea == 'Y' or idea == 'y':
            continue
        else:
            flag = False
    

    相关文章

      网友评论

        本文标题:7.3-菲波那锲数列、素数、猴子吃桃问题

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