2015-11-04 33 views
-7

我在計算1-1000之間哪個數字具有最多除數。我想打印出什麼數字,以及有多少除數。如果有不止一個數字包含最多除數,我不會打印出所有這些數字。Java - 哪個編號有最多除數

任何人都可以幫助我嗎?我是新來的,所以請不要使用高級代碼。 謝謝

public static void main(String[] args) { 
    int divisors = 0; 
    //int nr = 10000; 

    for (int n = 1; n <= 10000; n++) { 



    for (int i = 1; i <= n; i++) { 

     if (n%i==0) { 
      System.out.print(i + " "); 
      divisors++; 
      } 
     } 
     System.out.println("\nDivisors: " + divisors); 
    } 
} 

}

+5

你必須付出一些努力。你試過什麼了? – Arc676

+2

歡迎來到Stack Overflow!請[參觀],環顧四周,並通讀[幫助],特別是[*我如何提出一個好問題?](/ help /如何問) –

+0

我試過把這些數字進入陣列,但事實是我其實不知道該怎麼做。如果我有適當的代碼,我會爲您提供代碼,但不幸的是我沒有。我的代碼現在沒有意義。 –

回答

2

你讓初學者典型錯誤。你已經被賦予了一個任務來編寫一個產生XY輸出的程序,現在你很難到達那裏,因爲你瞄準的目標遠遠超出了你的範圍(還!)。

你應該在解決這個任務時應該考慮的事情叫做算法。本質上,這是將較大的問題解構成較小的問題的方法,這些問題很容易被他們自己解決。

所以你不想通過從1到10000的所有數字,找到那些有最多除數的數字。

那麼爲了讓距離想要的解決方案更近一些英寸/米,可以解決的最小可能問題是什麼?

也許這將是檢查,對於兩個給定數字ab如果ba除數的程序。你已經有一些代碼完全做到這一點。

那麼下一步是什麼?

怎麼樣得到所有的因數一個數字。將它們打印出來,看看你的程序是否正常工作,並以某種方式保存這個特定數字有多少除數,並打印這個值。

現在你已經朝着最終目標邁進了一大步。你有一個程序可以得到一個數字,並給你這個數字所有有效的除數。

從這裏開始,你可以採取不同的方式來達到你的目標(我只會展示一個)。由於您已經確定數字有多少個除數,現在可以對每個數字從1到10000運行此程序,並確定每個數字的除數。如果你正確地保存它們,你也可以直接使用它來達到最後一個小跳躍的目標。

在遍歷所有這1 ... 10000個數字的同時,您已經可以節省您遇到的最大數量的除數。因此,最後一步是通過因數量的列表並打印出您已經設法記住的數字,作爲您遇到的最高金額。

您現在已經解決了您的初始任務,並希望能夠以某種方式學會您必須將大問題分解爲小問題以使其可解決。所以每次你想「我該怎麼解決這個問題?這對我來說太複雜了!」想到「算法是解決方案!」和「我必須把它分解成更小的一點」。我知道這很難學,因爲我爲許多初學者編程,並且毫無例外地每個人都有這個問題,但最終每個人都遲早會嘗試並嘗試嘗試。

+0

謝謝你幫助我。我設法計算了數字10 000的因數並將其打印出來。當我試圖向前邁進時,我無法找到一種方法讓程序運行每個數字從1到10000,你能給我一個提示嗎?我用最新的代碼更新了主帖。 –

+0

你知道如何編寫方法嗎?如果__yes__然後把決定一個數字除數的程序放入一個循環中,只需在循環中調用此方法(從1到10000)。您將不得不考慮參數和方法的返回,但這對現有程序不會有太大改變。如果__not__,則應該使用(nother)循環遍歷數字1到10000,並使用此循環的循環計數器作爲您已有的「查找所有除數」算法的輸入。 –