我创建了一个对给定正整数的数字求和的函数:
def digit_sum(n):
tot = 0
for i in str(n):
tot += int(i)
return tot
但我知道使用 mod10、mod 100 等可以找到给定数字的数字。所以我认为有另一种方法来构造函数,而无需来回整数转换。有任何想法吗?
我创建了一个对给定正整数的数字求和的函数:
def digit_sum(n):
tot = 0
for i in str(n):
tot += int(i)
return tot
但我知道使用 mod10、mod 100 等可以找到给定数字的数字。所以我认为有另一种方法来构造函数,而无需来回整数转换。有任何想法吗?
此处以 Javascript 显示:http: //jsfiddle.net/bhQLa/
使用单独打破数字
// Loop through the digits without using string
var base = 1;
while (base * 10 <= num) base *= 10;
while (base >= 1) {
var digit = (num - (num % base)) / base;
digits.push(digit);
num -= digit * base;
base /= 10;
}
// ---
然后总结它们。首先将基数增加到最大值。然后在抓取数字后将基数递减(num - (num % base)) / base
。不要忘记减少您的工作编号,然后是基数。