Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sum of digits untill reach single digit [duplicate]

Tags:

python

I set an algorithm which sum a number's digits but I couldn't make it till single digit. It only work for one step.

For example:

a=2, b=8
a^b=256 = 6+5+2 = 13

But I want to reach single digit, like:

a^b=256 = 6+5+2 = 13 = 3+1 = 4

Below you can see my codes.

a = int(input("Enter a value"))
b = int("Enter second value")

number = pow(a, b)
sum= 0
while float(number) / 10 >= .1:

    m = number % 10
    sum += m
    number = number // 10

    if float(number) / 10 > .1:
       print(m, end=" + ")
    else:
       print(m, "=", sum)
like image 299
alihank Avatar asked Oct 18 '25 13:10

alihank


1 Answers

Here you go:

n = 256
while n > 9:
    n = sum(int(i) for i in str(n))

print(n)

So whats going on? str(n) converts n to a string, strings in python can be iterated over so we can access digit by digit. We do this in a generator, converting each digit back to a integer, int(i) for i in str(n), we use sum to sum the elements in the generator. We repeat this process until n is a single digit.

Added a solution that gives the calculation explicitly:

def sum_dig(n):
    _sum = sum(int(i) for i in str(n))
    explained = "+".join(list(str(n)))
    return _sum, explained
n = 256
s = ""
while n > 10:
    n, e = sum_dig(n)
    s+= f'{e}=' 

s += str(n)
print(s)

yields:

2+5+6=1+3=4
like image 160
Christian Sloper Avatar answered Oct 20 '25 04:10

Christian Sloper