1.定义:枚举法也称为穷举法,是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。因此,使用枚举法解决问题时,需要考虑优化算法,选择恰当的枚举对象,尽量分析出问题中的隐含条件,缩小枚举范围,以提高解决问题的效率。
2.一般结构:循环(穷举范围)+判断(检验条件)。

例题1:请输出所有的两位偶数。

分析:

穷举范围:两位数范围是10-99。利用range(10,100)可生成10-99的列表

判断条件:偶数满足除以二的余数为0。i%2==0  此条件满足则i为偶数

代码如下:

for i in range(10,100):if i%2==0:print(i)

例题2:输入一个数,判断该数是否为质数

分析:

穷举范围:n为素数,需要满足n%2!=0,n%3!=0 ... n%n-1!=0,n的除数范围应该为2-n-1。

判断条件:n%i==0 则代表i是n的因数,n不是素数,当穷尽所有的i,该条件都不满足,则n为素数

代码如下:

n=int(input())
for i in range(2,n-1):if n%i==0:break
else:print(n,是素数)

例题3:请输出所有的两位质数

分析:

穷举范围:两位数范围是10-99。利用range(10,100)可生成10-99的列表

判断条件:判断每一个n是否为素数,利用例题2中相关代码

代码如下:

for n in range(10,100):for i in range(2,n-1):if n%i==0:breakelse:print(n,"是素数")

另一种做法:

t=0
for n in range(10,100):for i in range(2,int(2,int(n**0.5)+1)):if n%i==0:t=1break
if t==1:print(n."不是素数")
else:print(n,“是素数”)

例题4:这个问题,是我国古代著名趣题之一。 大约在1500年前,《孙子算经》中就记载了这个有趣的问题。 书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足, 问雉兔各几何?这四句话的意思是: 有若干只鸡兔同在一个笼子里,从上面数,有35个头  ;从下面数,有94只脚。求笼中各有几只鸡和兔?

分析:

穷举范围:兔的只数范围为1~34,对应的鸡的只数为35-tu

判断条件:根据每组可能解判断兔的只数*4+鸡的只数*2==94是否成立,如果成立,则代表这组可能解成立

代码如下:

for tu in range(1,35):ji=35-tuif tu*4+ji*2==94:print(“兔的只数为”,tu,“鸡的只数为”,ji)

例题5:一个三位数如果满足该数本身=百位上的数字**3+十位数字**3+个位上的数字**3,则该数被称为三位自幂数,也叫作水仙花数。请输出所有的水仙花数。

穷举范围:三位数的范围是100-999。利用range(100,1000)可以生成该列表。

判断条件:该数本身=百位上的数字**3+十位数字**3+个位上的数字**3

代码如下:

for i in range(100,1000):bai=i//100shi=i//10%10ge=i%10if bai**3+shi**3+ge**3==i:print(i,“是水仙花数”)

例题6:公鸡5元一只,母鸡3元一只,小鸡3只一元, 用100元买一百只鸡。其中公鸡,母鸡,小鸡都必须要有。问公鸡,母鸡,小鸡要买多少只刚好凑足100元

穷举范围:公鸡只数范围是1~20,母鸡只数1~33,小鸡只数1~100

判断条件:公鸡只数+母鸡只数+小鸡只数==100  且  公鸡的钱数+母鸡的钱数+小鸡的钱数==100

代码如下:

for cock_num in range(1,21):          #公鸡只数可能为1-20for hen_num in range(1,34):       #母鸡只数可能为1-33for chick_num in range(1,101): #(3小鸡)只数可能为1-100money1=cock_num*cock_price+hen_num*hen_price+chick_num*threechick_pricenum1=cock_num+hen_num+chick_num*3if money1==100 and num1==100:print (cock_num,hen_num,chick_num*3) #(③小鸡数)

例题7:输入两个数,求出这两个数的最大公约数

穷举范围:最大公约数可能是1-两个数中较小的那个

判断条件:这两个数除以最大公约数的余数都为0

代码如下:

m=int(input())
n=int(input())
for i in range(min(m,n),0,-1):if m%i==0 and n%i==0:print(m,"和",n,"的最大公约数是",i)

例题8:孪生素数(质数对)

所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经近得不能再近了,如同孪生兄弟一样,故将这一对素数称为孪生素数。显然,最小的一对孪生素数是(1,3)。我们可以写出3~100以内的孪生素数,一共有8对,分别是(3,5),(5,7),(11,13),(17,19),(29,31),(41,43)(59,61)和(71,73)。随着数字的增大,孪生素数的分布也越来越稀疏,人工寻找孪生素数变得非常困难。关于孪生素数还存在着一个著名的猜想——孪生素数猜想,即孪生素数是否有无穷多对,这是数论中还有待解决的一个重要问题。此处我们只讨论在有限范围内的孪生素数求解问题。
问题:编程求出3~1000以内的所有孪生素数。

分析:

在判断孪生素数之前首先需要判断这个数字是否为素数,如果连素数都不是的话也就没有必要再继续去判断了。函数定义如下:

def isprime(n):for i in range(2,n-1):if n%i==0:return Falseelse:return True

穷举范围:第一个数的范围是2—998,另一个数的范围则是4—1000

判断条件:第一个数和另一个数调用isprime()函数的返回值均为True

def isprime(n):for i in range(2,n-1):if n%i==0:return Falseelse:return True
#主程序
for i in range(2,999):if isprime(i) and isprime(i+2):print(i,"和",i+2,"是孪生素数")

例题9:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。

编程1:输入一个数,判断这个数是否是完数。

分析:

利用for循环找到该数的所有因子,求出因子之和。若因子和与该数相等则该数为完数。

n=int(input())
s=0
for i in range(2,n):if n%i==0:s=s+i
if s==n:print(n,"是完数")

编程2:输出1-1000以内所有的完数

分析:

利用编程1自定义一个可以判断该数是否为完数的函数

穷举范围:1-1000

判断条件:该数为完数,则输出

def ws(n):s=1for i in range(2,n):if n%i==0:s=s+iif s==n:return True#主程序
for i in range(1,1001):if ws(i):   print(i)

python算法一:枚举法相关推荐

  1. 马虎的算式子 (枚举法)

    题意: ab*cde = adb*ce (abcde五个不同的数字,不包含0) 满足该式子的一共多少种 解法1(枚举法) 思路: 本题目中的恒等条件是:ab*cde = adb*ce 其中不定量的取值 ...

  2. c语言枚举法课程设计报告,枚举法的程序实现及优化

    计新明 内容分析 本部分内容是教育科学出版社出版的必修1<数据与计算>第四单元第一节中的内容,整本书的思路是初始数据与计算.编程计算.认识数据.计算与问题解决.数据分析与人工智能,第四章属 ...

  3. 蓝桥杯python省赛冲刺篇2——常用算法的详细解析及对应蓝桥杯真题:打表模拟法、递推递归法、枚举法、贪心算法、差分与前缀和

    注意:加了题目链接 目录 注意:加了题目链接 一.打表模拟法 介绍 1. 算式问题 题目描述 解析与代码演示 2. 求值 题目描述 解析与代码演示 3. 既约分数 题目描述 解析与代码演示 4. 天干 ...

  4. Python:枚举法

    python枚举法方法很多,下面列举几种常见实现方式: 1.自定义类 1.方法1 class SeriesEnum:one, two, three, four, five, six, seven, e ...

  5. 1.Python算法之枚举算法

    1.什么是枚举算法?  枚举算法也叫穷举算法,最大特点是在面对任何情况时会尝试每一种解决方法.在进行归纳推力时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么这个结论是可靠的,这种归纳方 ...

  6. 百钱百鸡问题(C++枚举法)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: 中国古代数学家张丘建在他的<算经>中提出了著名的"百钱百鸡问题":鸡翁一,值钱五:鸡母一,值钱 ...

  7. 算法:枚举法---kotlin

    枚举法:效率低,循环所有的情况,找到正确答案 用于解决数学问题,还是很简单的. 比如,奥数里面: 算 法 描 述 题X题=题题题题题题 其中 算法描述题每一个为一个数字,请写出正确的数字. ok,我们 ...

  8. c语言 3个人比饭量大小,OpenJudge计算概论-比饭量【枚举法、信息数字化】

    /*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...

  9. df满足条件的值修改_如何用python实现熵值法求指标权重(实例)

    权重是指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性.而在我们的数据分析过程中,倘若各个 ...

最新文章

  1. Alibaba Sentinel限流功能
  2. YYDS 的 IDEA插件,没装上的安排起来!
  3. formidable处理提交的表单或文件的简单介绍
  4. QQ浏览器如何修改截屏快捷键?QQ浏览器修改截屏快捷键的方法
  5. javaSE----继承
  6. Ubuntu 图形桌面死机重启(机器不重启)
  7. 为什么base64编码的字符串的末尾有=符号
  8. iPadOS 14.7和macOS 11.5,以及操作系统更新的安全说明
  9. SPSS25安装教程
  10. java 字符串练习(罗马数字的转换)
  11. C++高级编程资料汇总(参考手册+电子书+编程思想+算法分析)
  12. 高清格式——720p/1080i/1080p,谁更清晰
  13. 机器学习建模工具PyCaret详讲
  14. 【电容知识】之【NPO X7R Y5V 电容规格细谈】
  15. 软件盗版与非商业使用
  16. POJ 2404 Jogging Trails 笔记
  17. 技术写作的两种方向和方法
  18. chapter8——消抖技术
  19. [论文]基于模型的细长体欠驱动水下机器人输出反馈控制:理论与实验
  20. 目标检测之Loss:Center Loss梯度更新

热门文章

  1. 检测Android应用(APP)的启动与关闭
  2. 五十一个经典小故事4
  3. 可能是最详细的字符编码详解
  4. iso三体系认证有什么用
  5. VS中警告等级的含义
  6. 2022年69 个经典 Spring 面试题和答案,值得收藏
  7. alex股票查询小程序练习
  8. 数据库大作业代码展示2
  9. Unity3D读取Socket的二进制图片
  10. 获爱分析认定,Stratifyd入选《2022营销科技厂商全景报告》