-
1 # 程式設計老大叔
-
2 # 自學JAVA
這個問題主要考的是迴圈和if結合使用的方式,所以這裡我們從認識完美數開始,這樣才能根據他是要求去轉換為程式碼:
什麼是完美數完美數用答主自己的話來說,一個數,從1開始到它自己,能被它自己整除的數,加起來還等於它自己,就是所謂的完美數。比喻:6 能被它整除的有:1,2,3。
整除的數全加起來:1+2+3=6
Java實現程式碼的主要邏輯好知道了什麼是完美數,那麼根據這個要求我們來做完美數的計算,整個實現的思路我們一步一步的來運算:
第一步:需要從控制檯上輸入,那麼需要用到Scanner工具
Scnner sca=new Scanner(System.in);
System.out.println("請輸入一個正整數:");
int num=sca.nextInt();//接收輸入的正整數
第二步:設定迴圈變數和除數的累加變數
int i=1;//因為除數是從1開始
int sum=0;//用來做當前能被整除的數的累加變數,預設是沒有累加,所以為0
第三步:做當前輸入的數字的從1開始到它自己本身的迴圈除,獲取所有的能被整除的數,並累加;
while(i<num){
if(num%i==0){//判斷當前的數,是否能被輸入的數整除
sum+=i;//能整除做累加操作
}
i++;
}
第四步:累加所有的能被整除的數sum和輸入的數num做比較是否相同,相同這個數就算完美數。
if(sum==num){//判斷累加的所有整除的數和輸入的數是否相同
System.out.println("是完美數");//相同就是完美數
}else{
System.out.println("不是完美數");//否則就不是完美數
}
完整程式碼,以及輸出結果總結:那麼這個題目的難度重點是要理解完美數的要求,並且知道要求之後如何去轉換為程式碼,這個是關鍵點,這個點對於所有剛開始學的Java程式設計的小夥伴來說都是需要慢慢克服的,也沒有別的什麼捷徑,唯一的方式就是多練。
回覆列表
求輸入一個正整數,判斷其是否是一個完美數,用while迴圈怎麼做最簡潔?
完美數概念首先你得了解什麼叫”完美數“。一個數如果恰好等於除其本身外所有因子之和,這個數就稱為“完美數”。例如6=1+2+3.程式設計找出10000以內的所有完數。所以1不算,迴圈的話就得從1開始;
解題思路從1開始至目標數減1進行迴圈,逐一去判斷迴圈數是否為目標數的因子,若是,則加總至和,最後所有數都比較完,再對和和目標數進行相等判斷,如果和等於目標數,則是完美數,否則不是;
while迴圈實現int target_num = 6 ;//換成你要輸入的數
int sum = 0 ;//用來累加因子的和
int i = 1 ;
while (i<target_num)
{
i++ ;
//判斷i是否為目標數target_num 的因子 若是因子則目標是可以被整除
if(target_num%i == 0)sum+=i ;累積因子和
}
if(sum == target_num)cout<<"是完美數"<<endl;
else cout<<"不是完美數"<<endl;
for迴圈實現int target_num = 6 ;//換成你要輸入的數
int sum = 0 ;用來累加因子的和
for (int i = 1; i < target_num; i++)
{
//判斷i是否為目標數target_num 的因子 若是因子則目標是可以被整除
if(target_num%i == 0)sum += i ;//累積因子和
}
if(sum == target_num)cout<<"是完美數"<<endl;
else cout<<"不是完美數"<<endl;
總結其實完美數判斷起來還是比較簡單的,while迴圈在簡潔和效率上都是不如for迴圈的。雖然你的問題是while怎麼實現,但是建議用for迴圈。