繁体   English   中英

对一个数的所有数字求和的算法

[英]Algorithm to sum up all digits of a number

你能向我解释一下这个循环是如何工作的吗? 第一次循环之后和第二次循环之后发生了什么等等。

def sum(n):
  s = 0
  while n:
    s += n % 10
    n /= 10
  return s

>>> print sum(123)
6

所以基本上,我们在这个算法中所做的是我们一次从数字的最低有效数字中取出一位数字并将其添加到我们的 s(总和变量)中,一旦我们添加了最低有效数字,然后我们将其删除并一遍又一遍地执行上述操作,直到数字仍然为零,那么我们如何知道最低有效数字,只需将 n 除以 10 取余数,现在我们如何删除最后一位(最低有效位),我们只是将它除以 10,所以你去吧,如果它不明白,请告诉我。

def sum(n):
  s = 0
  while n:
    s += n % 10
    n /= 10
  return s

最好这样重写(更容易理解):

def sum(n):
  s = 0 // start with s = 0 
  while n > 0: // while our number is bigger than 0
    s += n % 10 // add the last digit to s, for example 54%10 = 4
    n /= 10 // integer division = just removing last digit, for example 54/10 = 5
  return s // return the result

Python 中的n > 0可以简单地写成n但我认为这对初学者来说是不好的做法

  int main()
  {
     int t;
     cin>>t;
     cout<<floor(log10(t)+1);
     return 0;
  }

输出

254
3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM