I'm looking for a math function that taking an integer returns the sum of it's digits. I tried with this method:

-I've got a digit sequence $d_{k+1},d_{k},...,d_{1}$ with $d_{k+1}\ne 0$ and $d_i \in \{0,1,2 \dots , 9\}$ for all $1 \le i \le k+1$; this represents the number $A$ in base $10$, so: $$A = \sum_{i = 1}^{k+1} d_i 10^{i-1}$$

-Now I know that each digit is generated by: $$d_i = \sum_{i=1}^{\left \lfloor \log_{10}(A)+1 \right \rfloor}\frac{A\,\, \pmod{10^i}-A\,\, \pmod{10^{i-1}} }{10^{i-1}}$$

-I expand the sum and I obtain: $$\frac{A\, \pmod{10}-A\,\, \pmod1}{1}+\frac{A\, \pmod{10^2}-A\,\, \pmod{10}}{10}+\cdots +\frac{A\, \pmod{ 10^i}-A\pmod{10^{i-1}}}{10^{i-1}}$$

-I have to simplify the denominator so: $$\frac{1\cdot (A\, \pmod{10}-A\,\, \pmod1)}{1}+\frac{10\cdot (\lfloor\frac{A}{10}\rfloor\, \pmod{10}-\lfloor\frac{A}{10}\rfloor\,\, \pmod 1)}{10}+\cdots +\frac{10^{i-1}\cdot (\lfloor{\frac{A}{10^{i-1}}}\rfloor\, \pmod{10}-\lfloor\frac{A}{10^{i-1}}\rfloor\,\, \pmod 1)}{10^{i-1}}$$

-I split the term: $$A\, \, \pmod{10}+\lfloor\frac{A}{10}\rfloor\, \, \pmod{10}+\cdots+\lfloor\frac{A}{10^{i-1}}\rfloor\, \, \pmod{10}-(A\, \, \pmod1+\lfloor\frac{A}{10}\rfloor\, \, \pmod1+\cdots +\lfloor\frac{A}{10^{i-1}}\rfloor\, \, \pmod1)$$

-Now I would have picked up $\pmod{10}$ and $\pmod1$: $$\left (\sum_{i=1}^{\left \lfloor \log_{10}(A)+1 \right \rfloor}\lfloor\frac{A}{10^{i-1}}\rfloor\right)\, \, \pmod{10}-\left (\sum_{i=1}^{\left \lfloor \log_{10}(A)+1 \right \rfloor}\lfloor\frac{A}{10^{i-1}}\rfloor\right)\, \, \pmod1$$; but I can't. Any ideas to move forward?


  • $\begingroup$ Welcome to stackexchange. What use will you make of this formula? If you need the result in a computer program there is a recursive algorithm that does the job neatly. You are essentially trying to do the job in a loop, which is harder. $\endgroup$ – Ethan Bolker Jul 4 '19 at 11:45
  • $\begingroup$ @EthanBolker If you are using a computer program then you would just add the digits in the string representation of the number. $\endgroup$ – Peter Foreman Jul 4 '19 at 11:55
  • $\begingroup$ I think the trouble is what you mean by a "math function". An algorithm describes such a function. $\endgroup$ – Couchy Jul 4 '19 at 11:56
  • $\begingroup$ I'm not searching an algorithm, I want to find a math formula that I will use to solve some problems, related with digits sum... $\endgroup$ – Matteo Jul 4 '19 at 11:58
  • 1
    $\begingroup$ What I mean is that you need to specify what you mean by a "math formula". For example, ask yourself why not just write $\sum_{i=1}^N d_i$? $\endgroup$ – Couchy Jul 4 '19 at 12:03

I worked on similar idea in my question many years ago. I asked to find any digit in a given number. There is an answer for my question to find any digit of a number via Fourier series expansion. Please check @Zander 's answer how to find the function. We can use it to find the sum of digit's numbers eaisly as shown below.

Let's define $d_n(A)$ is digit number of A, Where A is a real number. For example:




We can write easily $d_n(A) = d_0(10^{-n}A)$ and $$A = \sum_{k=-\infty}^\infty 10^k d_k(A)$$ $$A = \sum_{k=-\infty}^\infty 10^k d_0(10^{-k}A)$$

If you notice the formulas above , it is enough to find out only $d_0(A)$.

If we find $d_0(A)$ ,any digit can be found by using it. $$ d_0(A) =\frac{9}{2} -\frac{10}{\pi}\sum_{k=1}^\infty b_k \sin\left(\frac{k\pi A}{5}\right) $$ where $$ b_k = \begin{cases}0 & \mathrm{if}~10\mid k\\ 1/k & \mathrm{otherwise}\end{cases} $$

Thus we can write the sum of integer number's digits :$T$

If A is a positive integer , you can write $T$ as $$ T=\sum_{k=0}^\infty d_0(10^{-k}A)$$

  • $\begingroup$ Thanks a lot @Mathlover. Is there a method to evaluate this infinite sum (maybe with integrals)? $\endgroup$ – Matteo Jul 4 '19 at 14:52

Here's a "formula" for the sum of the digits of $n$:

$$s(n) = \sum_{k=0}^{\lfloor\log_{10} n\rfloor}\left(\left\lfloor\frac{n}{10^k}\right\rfloor-10\left\lfloor\frac{n}{10^{k+1}}\right\rfloor\right)$$

Note that each summand gives you a digit.

This can be simplified to $$s(n)= n - 9 \sum_{k=1}^{\lfloor\log_{10} n\rfloor}\left\lfloor\frac{n}{10^k}\right\rfloor$$

Note however that the term "formula" is not precisely defined. It's a term that depends of the context. It can mean very different things depending of the field you're working.

I think that in number theory or combinatorics one would allow the use of the floor and log functions, so one would consider this a formula (although not a "closed" formula, because the number of operations is not bounded)


I know this is a strange idea, and not an answer to the question, but it's possible that you can do something useful by reversing the task.

That is to say, instead of starting with $n$, you can say "I've got a digit sequence $d_k, d_{k-1}, \ldots, d_0$, with $d_k \ne 0$, and $0 \le d_i \le 9$ for all $i$, and this represents the number $n$ in base $10$," so that $$ n = \sum_{i = 0}^k d_k 10^k. $$

Now you can do things like talk about $\log_{10} n$ (which is between $k$ and $k+1$, and is approximately $k + \log d_k$, for instance), and other functions of $n$ may similarly be expressible in terms of the $d_i$.

Of course, without knowing details --- "I want to find a math formula that I will use to solve some problems, related with digits sum..." is a little bit vague --- it's tough to know whether this approach could be of any use.

Post-comment addition Here's a little matlab program that solves your problem (for not-too-large cases) using the approach I described:

function s = digitpower(k, a)
% Find numbers containing k or fewer digits with the property that the
% number equals v^a, where v is the sum of the digits of the number.

if (k == 0) 
    s = [];

trials = digits(k); % the first 10^k numbers, as digit sequences. 
powervec = 10.^((k-1):-1:0);
nums = powervec * trials;
sums = sum(trials, 1); 
pows = sums .^ a; 
s = find (nums == pows);
s = nums(s);

To make that run, you also need the "digits" program:

function s = digits(k)
% produce all digit-sequences of length k, in a k x 10^k matrix,
% where each column represents a digit-sequence. 
if k < 1
    error( "Can't get digit sequences of 0-digit numbers");

if k == 1
    s = 0:9;

q = digits(k-1);
r = size(q, 1); 
c = size(q, 2); 
qp = repmat(q, 1, 10); 
h = repmat((0:9)', 1, c)';
h = reshape(h, 1, []);
s = [h;qp];

Some sample executions of the program look like this:

>> digitpower(2, 1)

ans =     0     1     2     3     4     5     6     7     8     9

>> digitpower(2, 2)

ans =
     0     1    81

>> digitpower(2, 3)

ans =     0     1

>> digitpower(3, 3)

ans =     0     1   512

>> digitpower(4, 3)

ans =           0           1         512        4913        5832

THe first one says that the only numbers with 0, 1, or 2 digits whose digit-sum, to the first power, is equal to the number itself, are the numbers 0 through 9.

The second says that among 0-2-digit numbers, those whose digit-sum, squared, equal the number are 0, 1, and 81.

The last says that among numbers of no more than 4 digits, those that equal the cube of their digit-sum are 0, 1, 512, 4913, and 5832.

Those last ones surprised me a bit -- I didn't really expect to see as many positive results as this.

  • $\begingroup$ Thanks for your answer, I will correct. $\endgroup$ – Matteo Jul 4 '19 at 13:17
  • $\begingroup$ I would like to find some number that can be written as a power of the sum of their digits. $\endgroup$ – Matteo Jul 4 '19 at 14:53
  • $\begingroup$ So you'd like to find a digit-sequence with the property that $n = \sum_{i = 0}^k d_k 10^k= \left( \sum_{i = 0}^k d_k \right)^a$, for some (integer?) $a$. That seems like a reasonable question, and one that's reasonable to express in terms of the digits $d_i$ instead of the number $n$. I wrote a short program to verify this, and search for such numbers, and found a few. See the "post-comment additions" in my answer. $\endgroup$ – John Hughes Jul 4 '19 at 15:46
  • $\begingroup$ Yes, the exponent must be an integer; but if we search for example the 50th term it would be very difficult only by bruteforcing. At the contrary if we find a non recursive function, we obtain an exponential equation, so it would be simple to map the solutions... At first I also have tried your method, but it was too long... $\endgroup$ – Matteo Jul 4 '19 at 16:02
  • $\begingroup$ As I said, this was merely a demonstration that search for digit-sequences provides a workable approach without the need for the "extract digit" function. If you want to solve this problem for large values of $k$, I wish you the best of luck, but have no further insights. Well..maybe one: I suspect that the "extract digit" function will involve computation (either directly, or in one of the component functions) on the order of at least $\log n$, so that computing the digit-sum power will involve $n \log n$ time, making it impractical for numbers like $10^{50}$. But I could well be wrong. $\endgroup$ – John Hughes Jul 4 '19 at 17:01

If you allow the greatest integer function (whose domain is the set of reals and whose range is the set of integers) and the "mod $10$" function (whose domain is the set of integers and whose range is the set of residues from $0$ to $9$), then, for positive integers $A$, we have

$$S(A)=\sum_{n=0}^\infty\left(\left\lfloor A\over10^n\right\rfloor\mod10 \right)$$

or, written somewhat more abstractly, with obvious interprets of the symbols,

$$S(A)=\sum_{n=0}^\infty m_{10}(g(A/10^n))$$


$$\begin{align} S(1234) &=(\lfloor1234\rfloor\mod10)+(\lfloor123.4\rfloor\mod10)+(\lfloor12.34\rfloor\mod10)+(\lfloor1.234\rfloor\mod10)+\cdots\\ &=(1234\mod10)+(123\mod10)+(12\mod10)+(1\mod10)+(0\mod10)+\cdots\\ &=4+3+2+1+0+0+0+0+\cdots\\ &=10 \end{align}$$

Note, the upper limit $\infty$ in the sum can be replaced with something finite but depending on $A$. The "obvious" replacement is $\lfloor\log_{10}A\rfloor$, but the "easiest" is simply $A$ itself.

In a (deleted) answer/comment, the OP remarked they were interested in finding a number that is a power of the sum of its digits, i.e., $A=S(A)^k$ for some $k\ge1$. The first nontrivial example (with $A\ge10$) is $A=81$, and after that come $A=512$ and $A=2401$. The sequence can be found at https://oeis.org/A023106 .


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.