回覆列表
  • 1 # 程式設計老大叔

    求輸入一個正整數,判斷其是否是一個完美數,用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迴圈。

  • 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程式設計的小夥伴來說都是需要慢慢克服的,也沒有別的什麼捷徑,唯一的方式就是多練。

  • 中秋節和大豐收的關聯?
  • 9個月的寶寶怎麼補鈣、補鋅?