Digital Root
就在今晚,号称最大风力“18”级的台风“山竹”就要从中国香港南部掠过,商店关门,小巴和大巴也少了很多,一年一度的避台风活动又来了,这次的“山竹”确实是往年的升级版。这周我们最后看几道简单的练习,再加上前面将近38天的练习,如果能一步步理解跟下来的话,在所有中学生中,能力应该达到了中游水准,后面的练习也会进入升级版,继续努力!
今天介绍一种有意思的数字,“数根”,什么是数根?
数根(Digital root)是自然数的一种性质,并且,每个自然数都有一个数根。
数根是指将一正整数的各个位数相加,所得的值如果大于等于10的话,则继续将各位数进行相加直到其值小于十为止,则所得的一位数为该数的数根。
比如,123456 各位数相加是21,大于10,2+1=3,则3就是123456 的数根。
今天我们来看一道跟数根有关的题目:
题目描述:
对于输入数字n,编程计算它的数根。
输入:
输入一个数字。
输出:
输出该数的数根。
示例输入:
1234
示例输出:
1
数据范围限制:
n 在1 到2 的31次方之间。
(来源:改编自中学生程序设计,中国计算机学会)
两个注意的地方:
1. 求各个位数的和,每次迭代更新这个数本身,设置一个变量保存每位数相加的和即可。求每一位上的数字,用模10操作就行了。这个过程,我的建议是先调试,看看输出效果怎么样,一步步来。如果实现了各位数相加的功能,再接着往下进行。
2. 判断求出来的各位数是不是大于等于10 ,如果是的话,进行递归操作,即求这个数的各个位上的数字之和,调用该函数本身。记住,递归操作一定要有出口,也即程序函数对自己调用一定要终止的那个步骤。在这里的话,就是判断求出来的各个位数之和是不是小于10 ,是的话,输出这个值,函数结束。
好,就是这样,来看一下代码。
好,就是这样。最后,依旧跟大家分享一个Data Visualization (数据可视化) 的视频,感受数据可视化对大数据理解的便利,这个视频的主题是讲美国人收入的不均衡。来看一下!
领取专属 10元无门槛券
私享最新 技术干货