📌  相关文章
📜  查找数字的位数和,直到总和变为一位数

📅  最后修改于: 2021-04-24 22:26:45             🧑  作者: Mango

给定一个数字n ,我们需要找到它的数字之和:

If n < 10    
    digSum(n) = n
Else         
    digSum(n) = Sum(digSum(n))

例子 :

Input : 1234
Output : 1
Explanation : The sum of 1+2+3+4 = 10, 
              digSum(x) == 10
              Hence ans will be 1+0 = 1

Input : 5674
Output : 4 

蛮力方法是对所有数字求和,直到sum <10。
流程图:

下面是蛮力程序,用于找到总和。

C++
// C++ program to find sum of
// digits of a number until
// sum becomes single digit.
#include
  
using namespace std;
 
int digSum(int n)
{
    int sum = 0;
    
    // Loop to do sum while
    // sum is not less than
    // or equal to 9
    while(n > 0 || sum > 9)
    {
        if(n == 0)
        {
            n = sum;
            sum = 0;
        }
        sum += n % 10;
        n /= 10;
    }
    return sum;
}
 
// Driver program to test the above function
int main()
{
    int n = 1234;
    cout << digSum(n);
    return 0;
}


Java
// Java program to find sum of
// digits of a number until
// sum becomes single digit.
import java.util.*;
 
public class GfG {
     
    static int digSum(int n)
    {
        int sum = 0;
 
        // Loop to do sum while
        // sum is not less than
        // or equal to 9
        while (n > 0 || sum > 9)
        {
            if (n == 0) {
                n = sum;
                sum = 0;
            }
            sum += n % 10;
            n /= 10;
        }
        return sum;
    }
     
    // Driver code
    public static void main(String argc[])
    {
        int n = 1234;
        System.out.println(digSum(n));
    }
}
 
// This code is contributed by Gitanjali.


Python
# Python program to find sum of
# digits of a number until
# sum becomes single digit.
import math
 
# method to find sum of digits
# of a number until sum becomes
# single digit
def digSum( n):
    sum = 0
     
    while(n > 0 or sum > 9):
     
        if(n == 0):
            n = sum
            sum = 0
         
        sum += n % 10
        n /= 10
     
    return sum
 
# Driver method
n = 1234
print (digSum(n))
 
# This code is contributed by Gitanjali.


C#
// C# program to find sum of
// digits of a number until
// sum becomes single digit.
using System;
 
class GFG {
     
    static int digSum(int n)
    {
        int sum = 0;
 
        // Loop to do sum while
        // sum is not less than
        // or equal to 9
        while (n > 0 || sum > 9)
        {
            if (n == 0)
            {
                n = sum;
                sum = 0;
            }
            sum += n % 10;
            n /= 10;
        }
        return sum;
    }
     
    // Driver code
    public static void Main()
    {
        int n = 1234;
        Console.Write(digSum(n));
    }
}
 
// This code is contributed by nitin mittal


PHP
 0 || $sum > 9)
    {
        if($n == 0)
        {
            $n = $sum;
            $sum = 0;
        }
        $sum += $n % 10;
        $n = (int)$n / 10;
    }
    return $sum;
}
 
// Driver Code
$n = 1234;
echo digSum($n);
 
// This code is contributed
// by aj_36
?>


Javascript


C++
#include
using namespace std;
 
int digSum(int n)
{
    if (n == 0)
       return 0;
    return (n % 9 == 0) ? 9 : (n % 9);
}
 
// Driver program to test the above function
int main()
{
    int n = 9999;
    cout<


Java
import java.io.*;
 
class GFG {
 
    static int digSum(int n)
    {
        if (n == 0)
        return 0;
        return (n % 9 == 0) ? 9 : (n % 9);
    }
     
    // Driver program to test the above function
    public static void main (String[] args)
    {
        int n = 9999;
        System.out.println(digSum(n));
    }
}
 
// This code is contributed by anuj_67.


Python3
def digSum(n):
 
    if (n == 0):
        return 0
    if (n % 9 == 0):
        return 9
    else:
        (n % 9)
 
# Driver program to test the above function
n = 9999
print(digSum(n))
 
# This code is contributed by
# Smitha Dinesh Semwal


C#
using System;
 
class GFG
{
    static int digSum(int n)
    {
        if (n == 0)
        return 0;
        return (n % 9 == 0) ? 9 : (n % 9);
    }
     
    // Driver Code
    public static void Main ()
    {
        int n = 9999;
        Console.Write(digSum(n));
     
    }
}
 
// This code is contributed by aj_36


PHP


Javascript


输出 :

1

也有一个简单而优雅的O(1)解决方案。答案很简单:-

If n == 0
   return 0;

If n % 9 == 0      
    digSum(n) = 9
Else               
    digSum(n) = n % 9 

以上逻辑是如何工作的?
如果数字n可以被9整除,那么直到总和变为一位数字之前,其数字总和始终为9。例如,
设n = 2880
数字总和= 2 + 8 + 8 = 18:18 = 1 + 8 = 9
数字可以是9x或9x + k的形式。对于第一种情况,答案始终为9。对于第二种情况,答案始终为k。

下面是上述想法的实现:

C++

#include
using namespace std;
 
int digSum(int n)
{
    if (n == 0)
       return 0;
    return (n % 9 == 0) ? 9 : (n % 9);
}
 
// Driver program to test the above function
int main()
{
    int n = 9999;
    cout<

Java

import java.io.*;
 
class GFG {
 
    static int digSum(int n)
    {
        if (n == 0)
        return 0;
        return (n % 9 == 0) ? 9 : (n % 9);
    }
     
    // Driver program to test the above function
    public static void main (String[] args)
    {
        int n = 9999;
        System.out.println(digSum(n));
    }
}
 
// This code is contributed by anuj_67.

Python3

def digSum(n):
 
    if (n == 0):
        return 0
    if (n % 9 == 0):
        return 9
    else:
        (n % 9)
 
# Driver program to test the above function
n = 9999
print(digSum(n))
 
# This code is contributed by
# Smitha Dinesh Semwal

C#

using System;
 
class GFG
{
    static int digSum(int n)
    {
        if (n == 0)
        return 0;
        return (n % 9 == 0) ? 9 : (n % 9);
    }
     
    // Driver Code
    public static void Main ()
    {
        int n = 9999;
        Console.Write(digSum(n));
     
    }
}
 
// This code is contributed by aj_36

的PHP


Java脚本


输出:

9

相关文章:
https://www.geeksforgeeks.org/digital-rootrepeated-digital-sum-given-integer/