用Python求完美数
整段代码基本上是面向过程的函数式编程思维。。。
第一段自定义函数Is_perfNum是用来判断是否为完美数的,引用 一下某度百科的完美数的定义:
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。
思路:
我们可以通过取余得零来找出一个数的所有真因子,再将这些真因子求和看是否等于这个数。
这样就可以判断这个数是否是完美数了。
第二段自定义函数flag():
我想实现这样一个功能,即当计算出一个完美数后,系统询问你是否要继续计算下一个完美数。
因此自定义了flag函数用于判断是否继续生成。
思路:
双层while循环就可以搞掂了,最外层循环条件为键盘键入Y/N。
内层循环条件为是否是完美数。
这样当程序跳出内层循环时,就会判断是否继续外层循环,这时候就可以提醒你键入Y/N啦
最后主函数部分:
变量 i 即为需要判断是否完美的数,每次循环过后会进行自加。
需要注意的是,在外层循环的最后一句也需要进行一次 i 的自加。
因为当 i 为完美数时,内层循环中的 i = i + 1不会被执行,因此 i 的值始终是完美数的值。
这样的话,当第一次求得完美数之后,i 始终不满足内层循环的条件,就无法继续生成接下来的完美数了。
所以,为了下一次运算做准备,在外层循环的最后一句也需要进行一次 i 的自加。
行文啰嗦。。。
直接上代码好了。。。
# -*- coding: utf-8 -*-'求完美数'
import osdef Is_PerfNum(x): #判断x是否是完美数L = [] # 创建列表存储因子for n in range(1,x): # 找出一个数的所有因子if x % n == 0:L.append(n)if sum(L) == x: # 列表求和判断完美数print('%s is perfect number.'%x)return Trueelse:return Falsedef flag(): # 判断是否继续print('Continue? (Y/N)')YN = str.upper(str(input())) # 把输入的字符先转化为string,然后再全变为大写if YN =='Y':return Trueelif YN =='N':print('Exiting program!')os.system("pause")return False else:print("Error, wrong character!")return Falseif __name__=='__main__':i = 1while(flag()):while(not Is_PerfNum(i)):i = i + 1 # 不是完美数时,i + 1 测试下一位数i = i + 1 # 是完美数时,跳出内循环并 i + 1,为下一次进入循环做准备
用Python求完美数相关推荐
- python找列表中相邻数的个数_利用python求相邻数的方法示例
前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的 ...
- python求一组数中最大数_python如何求一组数的最大值?_后端开发
php中session用法详解_后端开发 PHP中的session默认情况下是使用客户端的Cookie,当客户端的Cookie被禁用时,会自动通过[Query_String]来传递,其中[sessio ...
- python 寻找完美数_寻找完美的鼠标
python 寻找完美数 I have a small problem. I'm always looking for great computer mice. I've tried a number ...
- python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』
python:用递归的方法编写一个函数gys(x,y),计算两个数字的最大公约数. (提示,大的 def gys(x,y): a,b=max(x,y),min(x,y) c=a%b if c==0: ...
- python求两数最大公因数_Python求两个数的最大公约数
Python求两个数的最大公约数 一.求最大公约数算法: 1. 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2. 如果C等于0,则C就是整数A和整数B的最大公约数 3. ...
- python求回数_用python求回数
今天学到filter函数,做一道练习题,求回数的,我前前后后差不多用了半个小时才把它弄出来,先是有思路了然后写出来后一直报错,又改改换换,最后其实是某个小问题导致的,每次查这种小问题时都先怀疑是不是思 ...
- python求同构数_用c语言求1到1000的同构数_后端开发
python与平台有关吗_后端开发 Python与平台无关,因为Python是跨平台的语言,Python作为脚本语言,是解释执行的,所以能跨平台,前提是必须要有一个对应的解释器. 具体请看实例: py ...
- python求一组数的最大值_用python实现在一组数据中,寻找到最大数和最小数并输出最大数和最小数所在的位置...
题目 定义一个实数数组,数组的元素个数不低于十个,且存在重复的最大值和最小值. (1).编写python程序用for循环或while循环找出这些数中的最大数和最小数: (2).找出最大数和最小数的在改 ...
- python求奇偶数和_python奇偶数求和
原博文 2016-11-11 14:34 − #求100内奇数和while\for..in循环 sum = 0 i = 1 while i <= 100: sum += i i += 2 pri ...
最新文章
- android 图片水印处理 文字倾斜处理
- Linux C 实现文件传输
- stdio.h: C++输入输出操作
- oracle sequrnce_OracleSql语句学习(五)
- kafka-manager 安装
- python range函数范围_Python range函数
- [js] js源代码压缩都有哪些方法?它们的压缩原理分别是什么
- 数据结构C语言版之线性表
- c语言课程主要目的和内容,C语言程序设计课程教学大纲
- 思科OSPF配置实例(转)
- vue高德多条路线规划+带途径节点多组多个maker text标签创建+各路线颜色区别
- php替换word模板,tp5 使用phpword 替换word模板
- 怎样在电脑上下载哔哩哔哩的视频?
- iMindMap邀您一起“约惠”开学季
- 【论文笔记】Question Answering over Freebase with Multi-Column Convolutional Neural Networks
- 【文字识别】OCR截图文字识别提取(无需安装)拖拽图片,打开图片,图片PDF转文字的好帮手
- 2023二建建筑施工备考第二天Day03
- 中科大软院数据挖掘(LJL)考试回忆+课堂笔记+复习资料
- HTML5期末大作业:运动系列——NBA篮球主题学生网页设计(7个页面) HTML+CSS+JavaScript 体育网页设计HTML代码 学生网页课程设计期末作业下载 大学生网页设计制作成
- jTemplates异步加载实现与HTML5 video视频开发