您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“java經典算法實例代碼分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“java經典算法實例代碼分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
正值金九銀十好時節,又到了刷題月。
題目1:
求s = a + aa + aaa + aaaa + aa...a的值,其中a是一個數字。例如2 + 22 + 222 + 2222 + 22222(此時共有5個數相加),幾個數相加有鍵盤控制。
題目2:
一個數如果恰好等于它的因子之和,這個數就稱為"完數"。例如6=1+2+3。編程找出1000以內的所有完數。
找出規律,222 = 22*10+1;2222 = 222*10+2,其實就是后一個數 都在第一個數(start)上加start+10*num,其中num為上一次的疊加數。
看這題,首先要知道一件事,什么是完數,知道完數的算法規則,其實就能很清晰的計算出1000以內符合規則的數字,對吧。
那什么是完數?完數其實就是一個數如果恰好等于它的因子之和,這個數就稱為"完數"。比如6,所以所有因子[1,2,3]相加(1+2+3)就等于6.
知道了規則,那其實就成功了百分之八十,因為我之前有講過求一個數的所有因子。
題1AC代碼:
public static int sumNums(int num, int count) { //記錄輸入的num int start = num; //記錄和 int sum = 0; for (int i = 1; i <= count; i++) { sum += num; //計算出下一個數字。 num = start + num * 10; //丟棄最后一個“+”號 if (i == count) { System.out.print(num); } else { System.out.print(num + "+"); } } System.out.println("=" + sum); return sum; }
題2AC代碼:
/** * 計算1-1000之內的所有完數 */ public static List<Integer> ws() { //統計完數 List<Integer> list = new ArrayList<>(); //記錄一個數的因子之和 int sum; //循環1-1000之內的數 for (int i = 1; i <= 1000; i++) { //判斷該數是否為一個完數 sum = 0; for (int j = 1; j < i; j++) { if (i % j == 0) { //疊加因子之和 sum += j; } } //判斷是否為完數 if (sum == i) { list.add(i); } } return list; }
讀到這里,這篇“java經典算法實例代碼分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。