【发布时间】:2012-09-11 06:53:58
【问题描述】:
我们可以很容易地计算给定数字的位数之和,但是是否有任何数学公式或模式可以用来确定下一个数字的总和,而不必一次又一次地对所有数字求和?
例如
Sum of 1234 = 1+2+3+4 = 10
Sum of 1235 = 1+2+3+5 = 11
Sum of 1236 = 1+2+3+6 = 12
我可以在这里看到某种模式,但无法提出任何有效的数学算法。
我使用下面的方法来计算数字的总和:
public int sum(long n) {
int sum = 0;
while (n != 0) {
sum += n % 10;
n /= 10;
}
return sum;
}
这工作正常,但它是 CPU 密集型的。我想更快地做到这一点。如果我有一个数字序列,比如10->19,我应该只需要数出 10 的数字,然后为每个数字加一个,直到 19。
如果我已经有了以前数字的总和,有没有什么有效的方法来计算数字的总和?
【问题讨论】:
-
也许这是Mathematics问答的问题。
-
这不是家庭作业。我在处理另一个问题时遇到了这个问题。@Sujay 我已经用我目前使用的一些方法更新了我的问题。 @mathematician1975 抱歉对问题的描述不好,我认为这是直截了当的问题。我已经更新了这个问题,并提供了更多详细信息来解释它。
标签: java algorithm math sum digits