美文网首页
数根(Digital Root)

数根(Digital Root)

作者: 瞌睡重 | 来源:发表于2020-02-16 11:04 被阅读0次

    题目:给定一个数字,求其数根。

           例如给定38,3+8=11,1+1=2,则2就是其数根


    推导过程转自:https://blog.csdn.net/ray0354315/article/details/53991199

    推导:假定十进制数n,表达式写为

                                                                n=\sum_{i=0}^{n-1} a_{i} 10^i

    其中a_{i} 表示从低到高的每一位,因为10^i \equiv 1^i\equiv1(mod 9),那么

                                                               n\equiv \sum_{i=0}^{n-1}a_{i} (mod 9)

    也就是说 :一个数 和 它各位数之和 的模9同余

    我们使

                                                                f(x)=\sum_{i=0}^{n-1} a_{i}

    根据上面推导出的结论也就是

                                                               f(x)\equiv n(mod 9)

    则有

                                                   f(f(x))\equiv f(x)\equiv x(mod9)

    就是说每次累加模9的操作对于原数直接取模9是一样的,但只适用于   非9和9的倍数

    完整的公式为

    最后推导出

    digital_root= 1 + ((num - 1)%9)

    完结撒花!!!!

    小结:

    题目虽然简单,可以用递归硬解,但是算法的目的就是更快更高效。(数学的重要性😭)

    还看到很多用字符数组存储,开辟1000个数组空间,吓死人,不仅效率低,还浪费计算机性能。

    相关文章

      网友评论

          本文标题:数根(Digital Root)

          本文链接:https://www.haomeiwen.com/subject/pwqpfhtx.html