美文网首页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-菲波那锲数列、素数、猴子吃桃问题

    算法有优劣之分;能写出来记行; 练习1: 求100以内的 菲波那锲数列 fb(笔试/上机题); 后一项 = 前...

  • Python 常见算法题

    打印菱形 打印直角三角 打印等边三角形 打印100以内的斐波那契数列 求10万内的所有素数 猴子吃桃问题 猴子第一...

  • Java常见算法整理

    兔子问题(斐波那契数列规律) 台阶问题 (兔子问题变种,递归规律) 素数问题(判断素数、质数方式) 水仙花数问题(...

  • 菲波那契数列。

    什么是菲波那契数列。例子:0,1,1,2,3,5,8,11…这样的数列称为菲波那契数列。直接上代码比较靠谱 /**...

  • 2019-06-12 生成器与斐波那契数列

    生成器斐波拉锲数列

  • 509-斐波那契数列

    菲波那切数列 题目 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后...

  • 菲波那契数列

    菲波那契数列:1,1,2,3,5,8,13,21,34,55,89,144,...求第n个斐波那契数列JavaSc...

  • 菲波那切数列

  • 数组-斐波那契数列

    用数组求斐波那契数列数列问题。斐波那契数列是1,1,2,3,5,8,13,21,34,...数列

  • 2020-03-15练习几个

    打印99乘法表 计算出 1-100 之间的素数 斐波那契数列 快速排序算法

网友评论

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

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