1

クラスの宿題を書く必要があり、それに行き詰まりました。想定どおりに正しくセットアップする方法がわかりません。私が得た助けに感謝します。これは割り当てです:

整数は、1 を含む因数 (ただし、数自体ではない) の合計がその数になる場合、完全数であると言われます。たとえば、6 = 1 + 2 + 3 であるため、6 は完全数です。数値が完全数かどうかを判定するメソッド Perfect を記述します。このメソッドは、2 から 1000 までのすべての完全数を決定して表示するアプリケーションで使用します。各完全数の因数を表示して、その数が実際に完全であることを確認します。

出力:

6 is perfect.
Factors:1 2 3
28 is perfect.
Factors: 1 2 4 7 14
496 is perfect.
Factors: 1 2 4 8 16 31 62 124 248

そして、ここに私が行き詰まったコードがあります:

public class Homework4 {

    public static void main(String[] args) {

        for(int num=2;num<=1000;num++)
        {
            if(perfect(num))
            {
                System.out.println(num + " is perfect.");
                System.out.printf("Factors: ",perfect(num));

            }

        }
    }
        public static Boolean perfect(int num)
        {
            int sum = 0;

            for(int i=1;i<num;i++)
            {
                if (num % i == 0)
                {
                    sum+=i;
                }
            }
            if(num==sum)
            {
            for(int i=1;i<num;i++)
            {
                if (num % i == 0)
                {
                    System.out.print(i+" ");
                }
            }


            }
            return sum==num;
        }

}

走る:

1 2 3 6 is perfect.
1 2 3 Factors: 1 2 4 7 14 28 is perfect.
1 2 4 7 14 Factors: 1 2 4 8 16 31 62 124 248 496 is perfect.
1 2 4 8 16 31 62 124 248 Factors: BUILD SUCCESSFUL (total time: 0 seconds)
4

4 に答える 4

1

これを修正するには 2 つの方法があります。

  • perfectメソッドを 2 つの別々のメソッドに分割できます。1 つは数値が完全かどうかをチェックするメソッドで、もう 1 つは因数を出力するメソッドです。チェックするときに最初のものを呼び出します。true が返された場合は、2 番目のものを呼び出します。

または

  • 印刷する行を... is perfectメソッド自体に移動できます。if次に、ブロック全体を から削除しmainます。
于 2014-12-02T23:48:40.590 に答える
0

このようなものはどうですか:

public class Homework4 {

public static void main(String[] args) {

    for(int num=2;num<=1000;num++)
    {
        if(perfect(num))
        {
            System.out.println(num + " is perfect.");
            System.out.printf("Factors: ");


            for(int i=1;i<num;i++)
            {
                if (num % i == 0)
                {
                     System.out.print(i+" ");
                }
            }
        }
    }
}
public static Boolean perfect(int num)
{
    int sum = 0;

    for(int i=1;i<num;i++)
    {
        if (num % i == 0)
        {
            sum+=i;
        }
    }
    return sum==num;
}
}
于 2014-12-02T23:55:30.110 に答える
-2

これを試して

public class Homework4 {

public static void main(String[] args) {

    for(int num=2;num<=1000;num++)
    {
        if(perfect(num))
        {
            System.out.println(num + " is perfect.");
            System.out.printf("Factors: ");


            for(int i=1;i<num;i++)
            {
                if (num % i == 0)
                {
                     System.out.print(i+" ");
                }
            }
            System.out.print("\n"); // add this line to your code

        }
    }
}
public static Boolean perfect(int num)
{
    int sum = 0;

    for(int i=1;i<num;i++)
    {
        if (num % i == 0)
        {
            sum+=i;
        }
    }
    return sum==num;
}
}
于 2017-10-28T20:03:14.393 に答える
-3
public class Homework4 {

    public static void main(String[] args) {
        prime();
    }//end main

     public static void prime(){
                int sum=0;
                for(int i=1;i<=1000;i++){
                    
                    for(int k=2;k<i;k++){
                        
                        if(i%k==0){
                          sum+=i/k;
                        }//end if
                        
                        if(sum+1==i && k==i-1){
                              System.out.println(i);
                              
                        }//end if
                                  
                        
                        
                    }//end inner for

                    sum=0;

                }//end outer for
                
            }//end prime
    
    
}//end class

出力

6

28

496

于 2020-06-09T10:44:48.047 に答える