题目:给定一个数字,求其数根。
例如给定38,3+8=11,1+1=2,则2就是其数根
推导过程转自:https://blog.csdn.net/ray0354315/article/details/53991199
推导:假定十进制数n,表达式写为
其中表示从低到高的每一位,因为,那么
也就是说 :一个数 和 它各位数之和 的模9同余
我们使
根据上面推导出的结论也就是
则有
就是说每次累加模9的操作对于原数直接取模9是一样的,但只适用于 非9和9的倍数
完整的公式为
最后推导出
digital_root= 1 + ((num - 1)%9)
完结撒花!!!!
小结:
题目虽然简单,可以用递归硬解,但是算法的目的就是更快更高效。(数学的重要性😭)
还看到很多用字符数组存储,开辟1000个数组空间,吓死人,不仅效率低,还浪费计算机性能。
网友评论