用while循環怎么做最簡潔?
求輸入一個正整數,判斷其是否是一個完美數,用while循環怎么做最簡潔?
完美數概念首先你得了解什么叫”完美數“。一個數如果恰好等于除其本身外所有因子之和,這個數就稱為“完美數”。例如6=1+2+3.編程找出10000以內的所有完數。所以1不算,循環的話就得從1開始;
解題思路從1開始至目標數減1進行循環,逐一去判斷循環數是否為目標數的因子,若是,則加總至和,最后所有數都比較完,再對和和目標數進行相等判斷,如果和等于目標數,則是完美數,否則不是;
實現小編用C++的方式來實現,因為手邊沒有好的Java的IDE,就這個問題,主要牽涉到的就是循環邏輯處理,跟語言沒多大關系,所以C++你也能看得懂。
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循環。