Python练习题 014:完数

【Python练习题 014】 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3。编程找出1000以内的所有完数。

-----------------------------------------------------------

这题只要弄明白“完数”及其“因子”的概念,就不难。一开始我把“因子”理解为“质因子”,结果只算得出个6。后来才知道,只要数字a能被数字b整除,不论b是不是质数,都算是a的因子。比如:8的质因子是 2, 2, 2,但8的因子就包括 1,2,4。

这么算来,求解“因子”可就比“质因子”简单多了,因为不用担心质因子重复的问题。代码如下:

import math

for i in range(2, 1000):
    factors = []  #因子列表,i 每次循环都清空
    for j in range(1, math.floor(i/2)+1):
        if i%j == 0:
            factors.append(j)
    if sum(factors) == i:
        print(i, end=‘,‘)

输出结果如下:

6,28,496,

++++++++++++++++++++++++++++++++++++++

题目出处:编程语言入门经典100例【Python版】

时间: 2024-11-05 19:42:39

Python练习题 014:完数的相关文章

Python基础之完数输出

for i in range(2,1000):    s=1    for j in range(2,i):                if i%j==0:            m=i/j            s=s+m    if s==i:         print i,

Python练习题 025:判断回文数

[Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. ----------------------------------------------- 做题做到现在,这种题目已经很轻车熟路了.希望下一题能增加点难度啊~~~ x = input('请输入一个5位数:') if x[0] == x[4] and x[1] == x[3]: print('%s是个回文数' % x) else: print('%s不是回文数' % x) 输

【Python】【demo实验20】【练习实例】【寻找“完数”】

原题: 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. 我的代码: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- # 一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数. x = int(input("please input the number:\n")) #

python3 练习题100例 (二十四)打印完数

完数:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如 6 = 1+2+3. 题目内容: 输入一个正整数n(n<1000),输出1到n之间的所有完数(包括n). 输入格式: 共一行,为一个正整数. 输出格式: 若干行,从小到大输出完数,一行为一个数. 输入样例: 30 输出样例: 6 28 时间限制:500ms内存限制:32000kb a = int(input()) def fun(number): yinzi = [] for m in range(2, numbe

Python练习题 003:完全平方数

[Python练习题 003]一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? ------------------------------------------------- 所谓的“完全平方数”,就是开完根号仍然是整数. 数学渣是这么思考的:假设这个数 i 在10000以内.第一步:x = sqrt(i+100).如果 x == floor(x),则证明 x 是个整数.第二步道理也相同,但要记得把 x**2 把根号还原回来,再加上 168,然后再来

Python练习题-1

最近这几天的学习总练习: #! /usr/bin/env python # -*- coding: utf-8 -*- # Date: 2017/6/9 #练习一/1:实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登录成功,否则失败. # d = {'seven':'123'} # while True: # user = input('Enter your username:') # passwd = input('Enter your password:') # if

Python练习题 016:猴子吃桃

[Python练习题 016] 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只剩下一个桃子了.求第一天共摘了多少. -------------------------------------------------- 这题得倒着推.第10天还没吃,就剩1个,说明第9天吃完一半再吃1个还剩1个,假设第9天还没吃之前有桃子p个,可得:p * 1/2 -

Python练习题 009:水仙花数

[Python练习题 009] 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方. ---------------------------------------------------------------------- 这题也是送分题,只要能把任意三位数的百位.十位.个位拆解出来就好办了.思路:将任意3位数除以100再向下取整,即可得到百位数.将这个3位数减去(百位数*10

9 完数求解

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程 找出1000以内的所有完数. 1 public class _009PerfectCount { 2 3 public static void main(String[] args) { 4 5 print(); 6 } 7 8 private static void print() { 9 System.out.println("1~1000的完整数有:"); 10 int j