good good study, day day up!

找”完数”

2013-01-23

今天的作业是找”完数”.

定义”完数”为: 若一个正整数, 它所有的因子(不包括该数自身)的和等于自身, 则该正整数称为完数.

6 = 1 + 2 + 3, 则6为完数.

作业要求:

写一个函数

public static ArrayList getTheNumber(int start, int end);

start为起始值, end为结束值, 找出[start, end]区间上的所有完数, 放入一个ArrayList<Integer>中, 并将其返回, 答案稍后给出.

注意: 要考虑start和end的各种取值情况.


这里是答案:

import java.util.ArrayList;

public class Main {

	public static ArrayList getTheNumbers(int start, int end) {
		if (start <= 0 || end < start)
			return null;
		int sum;
		ArrayList numbers = new ArrayList();
		for (int num = start; num <= end; ++num) {
			sum = 0;
//			System.err.print(num+": ");
			for (int i = 1; i < num; ++i) {
				if (num % i == 0) {
//					System.err.print(i+" ");
					sum += i;
				}
			}
//			System.err.println();
			if (num == sum) {
				numbers.add(num);
			}
		}
		return numbers;
	}

	public static void main(String[] args) {
		ArrayList numbers = getTheNumbers(1, 1000);
		for(Integer number: numbers) {
			System.out.println(number);
		}
	}
}
作者:chending | Categories:Java作业 | Tags:

3条评论

  1. nius说道:

    哟,最近在写算法题?
    看邮件嘿

nius进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注