今天偶尔看到一个博客有贴了五十个编程题,决定以后两天左右做一道题
题目来源:http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html
1.题目
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
2.Java实现
Java中的通过创建对象,再来调用方法解决问题思想还是不太熟练
1 public class ProfectNumber { 2 /* 3 * 定义计算数字的因子总和 4 */ 5 public void GetProfectNumber(int a) { 6 for(int i=2;i<a;i++) { 7 int Sum = 0; 8 for(int j=1;j<i;j++) {// 求数字i的出本身之外的因子 9 if(i%j==0) { 10 Sum += j; 11 } 12 } 13 if(i==Sum) { 14 System.out.print(i+"、"); 15 } 16 } 17 } 18 19 public static void main(String args[]) { 20 ProfectNumber p = new ProfectNumber();//新建此类对象 21 p.GetProfectNumber(1000);//调用计算完数方法 22 } 23 }
3.Python实现
1 # -*- coding: utf-8 -*- 2 # 一个数等于除它本身之外的因子之和,称为完数 3 def Factor(a, L): 4 for j in range(1,a): 5 if a%j == 0: 6 L.append(j) 7 return L 8 9 if __name__ == ‘__main__‘: 10 ProNumber = [] 11 for i in range(2,1000):# 1不是完数,可以排除 12 A = [] 13 FactorList = Factor(i, A) 14 if sum(FactorList) == i: 15 ProNumber.append(i) 16 print("1000以内总共有{}个完数,分别是".format(len(ProNumber))) 17 for index in range(0,len(ProNumber)): 18 print(ProNumber[index])
原文地址:https://www.cnblogs.com/xiang9286/p/9671391.html
时间: 2024-10-28 13:15:43