我有一個爲班級寫作業並被卡住了,無法弄清楚如何使它正確設置,就像它應該。感謝您的任何幫助,我感謝您。這是分配:在java中使用作業的方法完美的數字
的整數被說成是一個完美的數字,如果它的因素,包括 1(而不是數字本身),一筆數目。對於 的例子,6是一個完美的數字,因爲6 = 1 + 2 + 3。寫法完美 ,確定數字是否是一個完美的數字。在 中使用此方法確定並顯示介於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)
除了未在預期的地方顯示的「因素」我猜 – realUser404 2014-12-02 23:46:16
如果是這樣的問題,是因爲你在if之前稱之爲perfect(num),所以它在完美數字之前輸出因子,然後我懷疑是否使用printf(a,b) – realUser404 2014-12-02 23:50:45
這是問題所在。那麼,我將如何修復程序的順序,使它像我顯示的輸出一樣? – Cesco 2014-12-03 00:23:01