整段代码基本上是面向过程的函数式编程思维。。。

第一段自定义函数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求完美数相关推荐

  1. python找列表中相邻数的个数_利用python求相邻数的方法示例

    前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的 ...

  2. python求一组数中最大数_python如何求一组数的最大值?_后端开发

    php中session用法详解_后端开发 PHP中的session默认情况下是使用客户端的Cookie,当客户端的Cookie被禁用时,会自动通过[Query_String]来传递,其中[sessio ...

  3. python 寻找完美数_寻找完美的鼠标

    python 寻找完美数 I have a small problem. I'm always looking for great computer mice. I've tried a number ...

  4. python求两数最大公因数_『用python求俩个数的最大公约数和最小公倍数』

    python:用递归的方法编写一个函数gys(x,y),计算两个数字的最大公约数. (提示,大的 def gys(x,y): a,b=max(x,y),min(x,y) c=a%b if c==0: ...

  5. python求两数最大公因数_Python求两个数的最大公约数

    Python求两个数的最大公约数 一.求最大公约数算法: 1. 整数A对整数B进行取整, 余数用整数C来表示 举例: C = A % B 2. 如果C等于0,则C就是整数A和整数B的最大公约数 3. ...

  6. python求回数_用python求回数

    今天学到filter函数,做一道练习题,求回数的,我前前后后差不多用了半个小时才把它弄出来,先是有思路了然后写出来后一直报错,又改改换换,最后其实是某个小问题导致的,每次查这种小问题时都先怀疑是不是思 ...

  7. python求同构数_用c语言求1到1000的同构数_后端开发

    python与平台有关吗_后端开发 Python与平台无关,因为Python是跨平台的语言,Python作为脚本语言,是解释执行的,所以能跨平台,前提是必须要有一个对应的解释器. 具体请看实例: py ...

  8. python求一组数的最大值_用python实现在一组数据中,寻找到最大数和最小数并输出最大数和最小数所在的位置...

    题目 定义一个实数数组,数组的元素个数不低于十个,且存在重复的最大值和最小值. (1).编写python程序用for循环或while循环找出这些数中的最大数和最小数: (2).找出最大数和最小数的在改 ...

  9. python求奇偶数和_python奇偶数求和

    原博文 2016-11-11 14:34 − #求100内奇数和while\for..in循环 sum = 0 i = 1 while i <= 100: sum += i i += 2 pri ...

最新文章

  1. android 图片水印处理 文字倾斜处理
  2. Linux C 实现文件传输
  3. stdio.h: C++输入输出操作
  4. oracle sequrnce_OracleSql语句学习(五)
  5. kafka-manager 安装
  6. python range函数范围_Python range函数
  7. [js] js源代码压缩都有哪些方法?它们的压缩原理分别是什么
  8. 数据结构C语言版之线性表
  9. c语言课程主要目的和内容,C语言程序设计课程教学大纲
  10. 思科OSPF配置实例(转)
  11. vue高德多条路线规划+带途径节点多组多个maker text标签创建+各路线颜色区别
  12. php替换word模板,tp5 使用phpword 替换word模板
  13. 怎样在电脑上下载哔哩哔哩的视频?
  14. iMindMap邀您一起“约惠”开学季
  15. 【论文笔记】Question Answering over Freebase with Multi-Column Convolutional Neural Networks
  16. 【文字识别】OCR截图文字识别提取(无需安装)拖拽图片,打开图片,图片PDF转文字的好帮手
  17. 2023二建建筑施工备考第二天Day03
  18. 中科大软院数据挖掘(LJL)考试回忆+课堂笔记+复习资料
  19. HTML5期末大作业:运动系列——NBA篮球主题学生网页设计(7个页面) HTML+CSS+JavaScript 体育网页设计HTML代码 学生网页课程设计期末作业下载 大学生网页设计制作成
  20. jTemplates异步加载实现与HTML5 video视频开发

热门文章

  1. EPICS简单实例2 -- subroutine记录(sub)介绍与使用
  2. 不用工具,如何快速计算文件的MD5?
  3. 3D打印切片软件cura的使用方法
  4. 89.破碎的玻璃横幅
  5. 三菱PLC的6大软元件知识
  6. MOOS-ivp简介
  7. python生成分形图片_如何用TensorFlow生成令人惊艳的分形图案
  8. pmp错题集2(强化二)
  9. IEduChina2019国际教育展在北京完美落幕
  10. 美团外卖API接入(二)