Given an integer number n, find the largest sum of digits in all divisors of n.
Examples :
Input : n = 12 Output : 6 Explanation: The divisors are: 1 2 3 4 6 12. 6 is maximum sum among all divisors Input : n = 68 Output : 14 Explanation: The divisors are: 1 2 4 68 68 consists of maximum sum of digit
Naive approach:
The idea is simple, we find all divisors of a number one by one. For every divisor, we compute sum of digits. Finally, we return the largest sum of digits.
Below is the implementation of the above approach:
CPP
// CPP program to find maximum // sum of digits in all divisors // of n numbers. #include <bits/stdc++.h> using namespace std; // Function to get sum of digits int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // returns maximum sum int largestDigitSumdivisior(int n) { int res = 0; for (int i = 1; i <= n; i++) // if i is factor of n // then push the divisor // in the stack. if (n % i == 0) res = max(res, getSum(i)); return res; } // Driver Code int main() { int n = 14; cout << largestDigitSumdivisior(n) << endl; return 0; } |
Java
// Java program to find maximum // sum of digits in all divisors // of n numbers. import java.util.*; import java.lang.*; class GfG { // Function to get // sum of digits public static int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n/10; } return sum; } // returns maximum sum public static int largestDigitSumdivisior(int n) { int res = 0; for (int i = 1; i <= n; i++) // if i is factor of n // then push the divisor // in the stack. if (n % i == 0) res = Math.max(res, getSum(i)); return res; } // Driver Code public static void main(String argc[]){ int n = 14; System.out.println(largestDigitSumdivisior(n)); } } // This code is contributed // by Sagar Shukla |
Python3
# Python3 code to find # maximum sum of digits # in all divisors of n numbers. # Function to get sum of digits def getSum( n ): sum = 0 while n != 0: sum = sum + n % 10 n = int( n / 10 ) return sum # returns maximum sum def largestDigitSumdivisior( n ): res = 0 for i in range(1, n + 1): # if i is factor of n # then push the divisor # in the stack. if n % i == 0: res = max(res, getSum(i)) return res # Driver Code n = 14print(largestDigitSumdivisior(n) ) # This code is contributed # by "Sharad_Bhardwaj". |
C#
// C# program to find maximum // sum of digits in all // divisors of n numbers. using System; class GfG { // Function to get // sum of digits public static int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // returns maximum sum public static int largestDigitSumdivisior(int n) { int res = 0; for (int i = 1; i <= n; i++) // if i is factor of n // then push the divisor // in the stack. if (n % i == 0) res = Math.Max(res, getSum(i)); return res; } // Driver Code public static void Main() { int n = 14; Console.WriteLine(largestDigitSumdivisior(n)); } } // This code is contributed by vt_m |
PHP
<?php // PHP program to find maximum // sum of digits in all // divisors of n numbers. // Function to get // sum of digits function getSum( $n) { $sum = 0; while ($n != 0) { $sum = $sum + $n % 10; $n = $n/10; } return $sum; } // returns maximum sum function largestDigitSumdivisior( $n) { $res = 0; for ($i = 1; $i <= $n; $i++) // if i is factor of n then // push the divisor in // the stack. if ($n % $i == 0) $res = max($res, getSum($i)); return $res; } // Driver Code $n = 14; echo largestDigitSumdivisior($n); // This code is contributed by anuj_67. ?> |
Javascript
<script> // Javascript program to find maximum // sum of digits in all divisors // of n numbers. // Function to get sum of digits function getSum(n) { let sum = 0; while (n != 0) { sum = sum + n % 10; n = Math.floor(n/10); } return sum; } // returns maximum sum function largestDigitSumdivisior(n) { let res = 0; for (let i = 1; i <= n; i++) // if i is factor of n // then push the divisor // in the stack. if (n % i == 0) res = Math.max(res, getSum(i)); return res; } // Driver Code let n = 14; document.write(largestDigitSumdivisior(n) + "<br>"); // This code is contributed by Mayank Tyagi </script> |
7
Time Complexity: O(n*log10 (n))
Auxiliary Space: O(1)
An efficient approach will be to find the divisors in O(sqrt n). We follow the same steps as above, just iterate till sqrt(n) and get i and n/i as their divisors whenever n%i==0.
Below is the implementation of the above approach:
CPP
// CPP program to find // maximum sum of digits // in all divisors of n // numbers. #include <bits/stdc++.h> using namespace std; // Function to get // sum of digits int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // returns maximum sum int largestDigitSumdivisior(int n) { int res = 0; // traverse till sqrt(n) for (int i = 1; i <= sqrt(n); i++) // if i is factor of // n then push the // divisor in the stack. if (n % i == 0) { // check for both the divisors res = max(res, getSum(i)); res = max(res,getSum(n / i)); } return res; } // Driver Code int main() { int n = 14; cout << largestDigitSumdivisior(n) << endl; return 0; } |
Java
// Java program to find maximum // sum of digits in all divisors // of n numbers. import java.io.*; import java.math.*; class GFG { // Function to get // sum of digits static int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // returns maximum sum static int largestDigitSumdivisior(int n) { int res = 0; // traverse till sqrt(n) for (int i = 1; i <= Math.sqrt(n); i++) { // if i is factor of // n then push the // divisor in the stack. if (n % i == 0) { // check for both the divisors res = Math.max(res, getSum(i)); res = Math.max(res, getSum(n / i)); } } return res; } // Driver Code public static void main(String args[]) { int n = 14; System.out.println(largestDigitSumdivisior(n)); } } // This code is contributed // by Nikita Tiwari |
Python3
# Python 3 program # to find maximum # sum of digits in # all divisors of # n numbers import math # Function to get # sum of digits def getSum(n) : sm = 0 while (n != 0) : sm = sm + n % 10 n = n // 10 return sm # returns maximum sum def largestDigitSumdivisior(n) : res = 0 # traverse till sqrt(n) for i in range(1, (int)(math.sqrt(n))+1) : # if i is factor of n then # push the divisor in the # stack. if (n % i == 0) : # check for both the # divisors res = max(res, getSum(i)) res = max(res, getSum(n // i)) return res # Driver Code n = 14print(largestDigitSumdivisior(n)) #This code is contributed # by Nikita Tiwari |
C#
// C# program to find maximum sum // of digits in all divisors of n // numbers. using System; class GFG { // Function to get // sum of digits static int getSum(int n) { int sum = 0; while (n != 0) { sum = sum + n % 10; n = n / 10; } return sum; } // returns maximum sum static int largestDigitSumdivisior(int n) { int res = 0; // traverse till sqrt(n) for (int i = 1; i <= Math.Sqrt(n); i++) { // if i is factor of n then push the // divisor in the stack. if (n % i == 0) { // check for both the divisors res = Math.Max(res, getSum(i)); res = Math.Max(res, getSum(n / i)); } } return res; } // Driver Code public static void Main() { int n = 14; Console.WriteLine(largestDigitSumdivisior(n)); } } // This code is contributed by Vt_m |
PHP
<?php // PHP program to find maximum // sum of digits in all // divisors of n numbers // Function to get // sum of digits function getSum($n) { $sum = 0; while ($n != 0) { $sum = $sum + $n % 10; $n = $n / 10; } return $sum; } // returns maximum sum function largestDigitSumdivisior( $n) { $res = 0; // traverse till sqrt(n) for ($i = 1; $i <= sqrt($n); $i++) // if i is factor of // n then push the // divisor in the stack. if ($n % $i == 0) { // check for both the divisors $res = max($res, getSum($i)); $res = max($res, getSum($n / $i)); } return $res; } // Driver Code $n = 14; echo largestDigitSumdivisior($n); // This code is contributed by anuj_67. ?> |
Javascript
<script> // JavaScript program to find // maximum sum of digits // in all divisors of n // numbers. // Function to get // sum of digits function getSum(n) { var sum = 0; while (n != 0) { sum = sum + n % 10; n = parseInt(n / 10); } return sum; } // returns maximum sum function largestDigitSumdivisior(n) { var res = 0; // traverse till sqrt(n) for (var i = 1; i <= Math.sqrt(n); i++) // if i is factor of // n then push the // divisor in the stack. if (n % i == 0) { // check for both the divisors res = Math.max(res, getSum(i)); res = Math.max(res,getSum(n / i)); } return res; } // Driver Code var n = 14; document.write(largestDigitSumdivisior(n)); </script> |
7
Time Complexity: O(sqrt(n) log n)
Auxiliary Space: O(1) as it is using constant space for variables
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Read More Information here to that Topic: geeksforgeeks.org/find-largest-sum-of-digits-in-all-divisors-of-n/ […]
… [Trackback]
[…] Read More on on that Topic: geeksforgeeks.org/find-largest-sum-of-digits-in-all-divisors-of-n/ […]
… [Trackback]
[…] Find More to that Topic: geeksforgeeks.org/find-largest-sum-of-digits-in-all-divisors-of-n/ […]
… [Trackback]
[…] There you will find 12074 more Info to that Topic: geeksforgeeks.org/find-largest-sum-of-digits-in-all-divisors-of-n/ […]