數根能夠經過把一個數的各個位上的數字加起來獲得。若是獲得的數是一位數,那麼這個數就是數根;若是結果是兩位數或者包括更多位的數字,那麼再把這些數字加起來。如此進行下去,直到獲得是一位數爲止。
好比,對於24來講,把2和4相加獲得6,因爲6是一位數,所以6是24的數根。再好比39,把3和9加起來獲得12,因爲12不是一位數,所以還得把1和2加起來,最後獲得3,這是一個一位數,所以3是39的數根。如今給你一個正整數,輸出它的數根。java
輸入包含多組數據。
每組數據包含一個正整數n(1≤n≤10100)。算法
對應每一組數據,輸出該正整數的數根。測試
24 39
6 3
由於輸入的數據能夠很是大,因此收的數字必須用字符串進行表示s。先對s中的每個數位進行相加,能夠獲得一個整數n,若是n小於10能夠直接返回結果,若是n大於等於10,對n進行處理,求每一個數位上的和m,再判斷m是否小於10,是就返回,不是就採用一樣的方法進行處理。spa
import java.util.Scanner; /** * Declaration: All Rights Reserved !!! */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); while (scanner.hasNext()) { String num = scanner.next(); System.out.println(solve(num)); } scanner.close(); } /** * 求數字的數根 * * @param num 字符串表示的數字 * @return 數根 */ private static int solve(String num) { int n = 0; for (int i = 0; i < num.length(); i++) { n += num.charAt(i) - '0'; } int i; int t; while (n >= 10) { i = n; t = 0; while (i != 0) { t += i % 10; i /= 10; } n = t; } return n; } }