この宿題は、1 から 1000 までの完全数に関する宿題でした。ここで、数はその約数の和に等しくなります。数値が完全数であるかどうかを確認する正しいコードを見つけたところ、それらの数値が 1、6、28、496 であることがわかりました (1 が含まれている理由はわかりませんが、それは私の先生の例に含まれていました)。私の質問は簡単です。私が望んでいた出力は次のようなものでした:
1 = 1
6 = 1+2+3
28 = 1+2+4+7+14
496 = 1+2+4+8+16+31+62+124+
248私がなんとか得たのは:
1 = 1
6 = 1+2+3+
28 = 1+2+4+7+14+
496 = 1+2+4+8+16+31+62+124+ 248+
最後に余分な + を除外するにはどうすればよいですか?
私のコードは次のようになります。
private static boolean perfect(int n){
boolean cek=false;
int x=0;
if(n==1)x=1;
for(int i=1;i<n;i++){
if(n%i==0)
x+=i;
}
if(x==n)cek=true;
return cek;
}
public static void main(String[] args) {
for(int i=1;i<1000;i++){
if(perfect(i)){
if(i==1)
System.out.println(i+"\t = "+i);
else{
System.out.print(i+"\t = ");
for(int j=1;j<i;j++){
if(i%j==0)
System.out.print(j+"+");
}
System.out.println("");
}
}
}
}
前もって感謝します。