一个整数为完数(perfect number)的条件是,其因子(包括但1不包括该数本身)的和等于该数。例如6是一个完数,因为,6=1+2+3。编写一个方法,判断形参number是否为一个完数。在一个applet中应用此方法,判断并打印1到1000之间的完数,打印每个完数的因子。

解决方案 »

  1.   

    这个算法不难的
    循环一下,是否整除,用个arraylist存一下所有因子,求和判断,输出
      

  2.   

    几条for语句就可以搞定了。 
    你等着,我去写出来。
      

  3.   

    这有一个,你参考一下:
    import java.util.ArrayList;public class PrimeNumber{
    public static ArrayList getPrimeNumber(int n){
    ArrayList al = new ArrayList();
    for(int i = 2; i < n; i++)

    boolean isPrimeNumber = true;
    for(int j = 2; j < i; j++)
    {
    if(i % j == 0){
    isPrimeNumber = false;
    }
    }
    if(isPrimeNumber){
    al.add(new Integer(i));    
    }
    }
    return al;
    }

    public static void main(String[] args)
    {
    ArrayList al = getPrimeNumber(1000);
    for(int i = 0; i < al.size(); i++){
    System.out.println(al.get(i));
    }
    }
    }
      

  4.   

    mport java.text.DecimalFormat;
    import java.text.NumberFormat;public class PerfectNumber
    {
    public static void num(int n)
    {

    int sum =0;
    for ( int i = 1; i <= n;i++)
    {
    sum =0;
    for ( int j = 1;j < i; j++)
    {
    if(i%j==0)
    {
    sum = sum + j;
    }
    }
    if(sum==i)
    {
    System.out.println("perfect number:"+sum);
    }
    }
    }

    public static void main(String args[])
    {
    num(10000);
    }
    }
      

  5.   

    import java.util.ArrayList;public class PerfectNumber{
    public static ArrayList getPerfectNum(int n){
    ArrayList al = new ArrayList();
    int sum =0;
    for ( int i = 1; i <= n;i++){
    sum =0;
    for ( int j = 1;j < i; j++) {
    if(i%j==0){
    sum = sum + j;
    }
    }
    if(sum==i){
    al.add(new Integer(sum));
    }
    }
    return al;
    }

    public static void main(String args[]){
    ArrayList al = getPerfectNum(10000);
    for(int i = 0; i < al.size(); i++){
    System.out.println("perfect number:" + al.get(i));
    }
    }
    }
      

  6.   

    import java.applet.Applet;
    import java.awt.*;
    public class wanshu extends Applet
    {
    public void paint(Graphics g)
    {
    int b=0;
    g.drawString("1000以内的完全数是:",20,30);
    for(int i=2;i<=1000;i++)
    {
    int sum = 0;
    for(int j = 1 ;j<=i/2;j++)
    {
    if(i%j==0)
    sum = sum + j;
    }
    if(sum == i ){
    g.drawString(i+"",40+b*50,60);
    b++;}
    }
    }
    }