编程找出1000以内的所有完数。

来源:互联网 发布:办公软件高级应用 编辑:程序博客网 时间:2024/06/04 20:09
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
程序设计:
根据定义,要找出1000之内的完数,需要将循环控制在1到1000,然后再判断这个数是不是完数(先求出这个数的所有因子,将这些因子相加得到的和与该数进行比较,如果相等就证明这个数是完数)

代码:

import java.util.Scanner;import org.junit.Test;public class PerfectNumber {//动态的求某个数之内的完数,这个数根据用户自己来输入public String getPerfectNumber(int m) {//定义一个变量来记录结果StringBuffer result = new StringBuffer();result.append(m).append("之内的完数是:");//外循环控制要求的完数在哪个范围for(int i = 1 ; i <= m ; i ++) {//定义一个变量记录当前数的因子和int tempSum = 0;//内循环用来求当前数的所有因子和for(int j = 1 ; j < i / 2 + 1 ; j ++) {if(i % j == 0) {tempSum += j;}}//判断因子和是否和该数相等,相等则是完数if(tempSum == i) {result.append(i).append(" ");}}return result.toString();}//测试方法@Testpublic void test() {Scanner sc = new Scanner(System.in);int m = sc.nextInt();sc.close();String perfectNumber = getPerfectNumber(m);System.out.println(perfectNumber);}}