數根

數根(又稱數字根Digital root)是自然數的一種性質,換句話說,每個自然數都有一個數根

數根是將一正整數的各個位數相加(即橫向相加),若加完後的值大於等於10的話,則繼續將各位數進行橫向相加直到其值小於十爲止,或是,將一數字重複做數字和,直到其值小於十爲止,則所得的值爲該數的數根。例如54817的數根爲7,因爲5+4+8+1+7=25,25大於10則再加一次,2+5=7,7小於十,則7爲54817的數根。——百度百科

寫代碼驗證:

最簡單的方法:

遞歸一下子。

  	function DigitalRoot(num) {      
	    if(num < 10) {         
			return num;      
		} else {
            //把數字轉換成字符串,把每一個數字都分割出來,存到數組裏
			var nums = (num + '').split('');         
			var sum = 0;         
			for(var i = 0; i < nums.length; i++) {     
                //遍歷取出每一個數字字符,轉換成數字並求和
				sum += parseInt(nums[i]);         
			}         
			return DigitalRoot(sum);      
		}   
	}

用上算法:

    function DigitalRoot1(num){
        return (num-1)%9+1;
    }

解釋:

ab寫成: 10a+b=9a+a+b, 這和a+b相差9a,也就是9的倍數。如果大一點也是一樣,abc寫成:100a+10b+c=99a+9b+a+b+c,和a+b+c相差9的倍數99a+9b=9 (10a+b) 。所以abcde.. .把所有的位數相加結果就是9的倍數取餘。另外先減一再加一的原因結果不會等於10,如果可以被9整除,直接取餘就會是0,這樣在計算過程中,先保證所有位數相加是取餘是0-8,這樣在結果+1時候,就會是1-9.不會出現0值。——知乎@caoglish

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章