Python 小高考篇(7)常用模板

news/2024/11/18 23:44:50/

目录

  • 斐波那契数列
    • 常规算法
    • 递推法
    • 递归法
  • 判断质数
    • 常规算法
    • 埃氏筛法
  • 最大公因数
    • 常规算法
    • 辗转相除法
  • 三条边求三角形面积
    • 海伦公式
  • 阶乘
    • 常规算法
    • 递归法
  • 结尾


本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。
因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。
违者必究,谢谢配合。
个人主页:blog.csdn.net/jzwalliser

斐波那契数列

常规算法

n = int(input()) #输入
last = 1 #上一个数
this = 1 #当前数字
if n == 1 or n == 2: #如果是第一项或第二项print(1) #那就是1
else:for i in range(n - 2): #一直算到第n项now = this + last #新的数字即为倒数第一个数字加倒数第二个数字last = this #产生了新的数字,所以倒数第一个数变成了倒数第二个this = now #当前数变成倒输第一个数print(this) #输出结果

递推法

fib = [1,1] #第一、二项
n = int(input()) #输入
if n > 2:for i in range(n - 2): #一直算到第n项fib += [fib[-1] + fib[-2]] #新的数字即为倒数第一个数字加倒数第二个数字,将新的数字放到列表中
print(fib[-1]) #列表中倒数第一个数字即为结果

递归法

def fib(n): #递归函数if n == 1 or n == 2: #第一、二项return 1 #那就是1return fib(n - 1) + fib(n - 2) #递归,新的数字即为倒数第一个数字加倒数第二个数字
print(fib(int(input()))) #输入,计算,输出

判断质数

常规算法

result = True #预处理,当前数有可能为质数
n = int(input()) #输入
if n == 0 or n == 1: #特判0和1不是质数print("no") #输出
for i in range(2,int(n ** 0.5) + 1): #从2一直试到根号n,看看有没有它的因数if n % i == 0: #如果找到了因数result = False #那么不是质数break #不用继续找因数了
if result == True: #是质数print("yes") #输出
else: #不是质数print("no") #输出

埃氏筛法

n = int(input()) #输入
l = list(range(n + 1)) #创建列表l:[1,2,3,4,...,n]
result = True #预处理,当前数有可能为质数
pointer = 2 #先处理2的所以倍数
while pointer != n: #如果指针没有指向当前数for i in range(pointer * 2,n + 1,pointer): #处理质数的倍数l[i] = 0 #质数的倍数不是质数,所以把它清掉if l[n] == 0: #如果当前数被清掉了result = False #那它就不是质数break #不用继续算下去了pointer += 1 #如果当前数没有被清掉,那它有可能就是质数,也有可能它是合数但还不是处理过的质数的倍数,所以没有被清掉,故处理下一个质数while l[pointer] == 0: #被清掉的数不是质数pointer += 1 #找到下一个质数
if result: #是质数print("yes") #输出
else: #不是质数print("No") #输出

最大公因数

常规算法

a,b = map(int,input().split()) #输入,转换为整数,保存到变量中
n = 1 #最大公因数暂定为1
for i in range(1,min([a,b]) + 1): #一直算到a、b中较小的那个if a % i == 0 and b % i == 0: #找到两个数的公因数n = i #更新公因数
print(n) #输出

辗转相除法

def gcd(a,b): #递归函数if b > 0:return gcd(b,a % b) #递归else:return a #返回a
a,b = map(int,input().split()) #输入,转换为整数,保存到变量中
print(gcd(a,b))#计算,输出

三条边求三角形面积

海伦公式

a,b,c = map(int,input().split()) #三角形三条边长
p = (a + b + c) / 2 #三条边长的一半
print((p * (p - a) * (p - b) * (p - c)) ** 0.5) #套公式

阶乘

常规算法

a = int(input()) #输入
result = 1 #结果
for i in range(1,a + 1): #一个个往上乘result *= i #乘
print(result) #输出

递归法

def fact(n): #递归函数if n == 1: #处理的数是1return 1 #1! = 1else: #处理的数大于1return fact(n - 1) * n #n * (n - 1)!
print(fact(int(input()))) #输入,计算,输出

结尾

好了,分享就到这里了,记得点赞收藏哦!


http://www.ppmy.cn/news/1548100.html

相关文章

iOS 18.1,未公开的新功能

童锦程祖师爷曾说过:“发誓可以,发朋友圈不行。”表面上看是渣男语录,实际上也说明了人们对隐私的看重。 在当今生活中,智能手机可能是最私密的电子产品,没有之一。不管是照片、联系人、短信、APP数据,甚至…

删除缓存之后,浏览器显示登录新设备

小小记录一下问题,清c盘正好就遇到了【答案AI生成】 清除c盘缓存,浏览器所有页面都需要重新登录,并在登录之后显示登录了新设备是为什么,是因为鉴权更新了就算新设备吗? 回答 清除C盘缓存后,浏览器所有页…

自由学习记录(21)

感觉反而 还复杂一点,关系并不纯粹,游戏里用的少...的确 是知道为什么游戏不用了 理解思想就可以了,实际操作也是动态的分析,硬套某种模式也不是怎么很合适 MVC的了解应该是差不多了,重点还是实际中的使用了 所以删了…

实时数据流的革命:分布式数据库的挑战与实践

标题:实时数据流的革命:分布式数据库的挑战与实践 在数字化转型的浪潮中,实时数据流处理成为企业获取竞争优势的关键。分布式数据库以其卓越的扩展性和高可用性,成为支撑实时数据流处理的核心技术。本文将深入探讨分布式数据库如…

Cyberchef配合Wireshark提取并解析TCP/FTP流量数据包中的文件

前一篇文章中讲述了如何使用cyberchef提取HTTP/TLS数据包中的文件,详见《Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件》,链接这里,本文讲述下如何使用cyberchef提取FTP/TCP数据包中的文件。 FTP 是最为常见的文件传输协议,和HTTP协议不同的是FTP协议传输…

nfs服务器--RHCE

一,简介 NFS(Network File System,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计 算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系…

<Project-23 Navigator Portal> Python flask web 网站导航应用 可编辑界面:添加图片、URL、描述、位置移动

目的: 浏览器的地址簿太厚,如下图: 开始,想给每个 Web 应用加 icon 来提高辨识度,发现很麻烦:create image, resize, 还要挑来挑去,重复性地添加代码。再看着这些密密麻麻的含有重复与有规则的…

neo4j desktop基本入门

下载安装不在赘述,本文只记述一些neo4j的基本入门操作 连接本地neo4j数据库 1. 点击ADD添加连接 端口一般是7687 账户名和密码忘记了,可以通过neo4j web(默认为neo4jneo4j://localhost:7687/neo4j - Neo4j Browser)重置密码 AL…