【发布时间】:2012-01-23 05:34:22
【问题描述】:
求十进制数字和的最快方法是什么?
以下代码是我写的,但对于范围1 to 1000000000000000000 来说非常慢
long long sum_of_digits(long long input) {
long long total = 0;
while (input != 0) {
total += input % 10;
input /= 10;
}
return total;
}
int main ( int argc, char** argv) {
for ( long long i = 1L; i <= 1000000000000000000L; i++) {
sum_of_digits(i);
}
return 0;
}
【问题讨论】:
-
分解输入,多线程,然后合并结果?
-
似乎不会那么慢——您需要多快?
-
如果这在您的计算机上花费超过一秒钟,我想知道您是如何在不到 100 年的时间内编译它的。
-
一台计算机在合理的时间内不能做任何十亿次的事情。也许你对要求有误解。
-
@Avinash:现在您已经添加了 main 函数,我想彻底修改我的声明。即使您可以编写一些能够在单个周期内执行的魔术函数,并且您拥有一台每台 4ghz 的 6 核计算机,您的代码也不可能花费不到一年的时间来执行。算一下:1000000000000000000 个周期/(4 GHz * 6 个内核)