# Program to count digits in an integer (4 Different Methods)

Last Updated : 16 Apr, 2024

Given a number N, the task is to return the count of digits in this number.

Example:

Program to count digits in an integer

## Simple Iterative Solution to count digits in an integer

The integer entered by the user is stored in the variable n. Then the while loop is iterated until the test expression n != 0 is evaluated to 0 (false). Â  We will consider 3456 as the input integer. Â

1. After the first iteration, the value of n will be updated to 345 and the count is incremented to 1.
2. After the second iteration, the value of n will be updated to 34 and the count is incremented to 2.
3. After the third iteration, the value of n will be updated to 3 and the count is incremented to 3.
4. In the fourth iteration, the value of n will be updated to zero and the count will be incremented to 4. Â
5. Then the test expression is evaluated ( n!=0 ) as false and the loop terminates with final count as 4.

Below is the implementation of the above approach:

C++ ```// Iterative C++ program to count // number of digits in a number #include <bits/stdc++.h> using namespace std; int countDigit(long long n) { if (n == 0) return 1; int count = 0; while (n != 0) { n = n / 10; ++count; } return count; } // Driver code int main(void) { long long n = 345289467; cout << "Number of digits : " << countDigit(n); return 0; } // This code is contributed // by Akanksha Rai ``` C ```// Iterative C program to count number of // digits in a number #include <stdio.h> int countDigit(long long n) { if (n == 0) return 1; int count = 0; while (n != 0) { n = n / 10; ++count; } return count; } // Driver code int main(void) { long long n = 345289467; printf("Number of digits : %d", countDigit(n)); return 0; } ``` Java ```// JAVA Code to count number of // digits in an integer import java.io.*; public class GFG { static int countDigit(long n) { int count = 0; while (n != 0) { n = n / 10; ++count; } return count; } /* Driver code */ public static void main(String[] args) { long n = 345289467; System.out.print("Number of digits : " + countDigit(n)); } } // This code is contributed by Arnav Kr. Mandal. ``` Python3 ```# Iterative Python program to count # number of digits in a number def countDigit(n): count = 0 while n != 0: n //= 10 count += 1 return count # Driver Code n = 345289467 print("Number of digits : % d" % (countDigit(n))) # This code is contributed by Shreyanshi Arun ``` C# ```// C# Code to count number of // digits in an integer using System; class GFG { static int countDigit(long n) { int count = 0; while (n != 0) { n = n / 10; ++count; } return count; } /* Driver code */ public static void Main() { long n = 345289467; Console.WriteLine("Number of" + " digits : " + countDigit(n)); } } // This code is contributed by anuj_67. ``` Javascript ```<script> // Iterative Javascript program to count // number of digits in a number function countDigit(n) { let count = 0; while (n != 0) { n = Math.floor(n / 10); ++count; } return count; } // Driver code n = 345289467; document.write("Number of digits : "+ countDigit(n)); // This code is contributed by Mayank Tyagi </script> ``` PHP ```<?php // Iterative PHP program to count // number of digits in a number function countDigit(\$n) { \$count = 0; while (\$n != 0) { \$n = round(\$n / 10); ++\$count; } return \$count; } // Driver code \$n = 345289467; echo "Number of digits : " . countDigit(\$n); //This code is contributed by mits ?> ```

Output
`Number of digits : 9`

Time Complexity : O(log10(n)) or O(num digits)
Auxiliary Space: O(1) or constant

## Recursive Solution to count digits in an integer

Keep dividing the number by 10 this reduces the input number size by 1 and keeps track of the number of sizes reduced.

Algorithm:

• The base condition of this recursive approach is when we divide the number by 10 and the number gets reduced to 0, so return 1 for this operation.
• Make a function call by dividing the number by 10, reducing the input size of the given number by 1, and adding 1 for this operation.

Below is the implementation of the above approach:

C++ ```// Recursive C++ program to count number of // digits in a number #include <bits/stdc++.h> using namespace std; int countDigit(long long n) { if (n/10 == 0) return 1; return 1 + countDigit(n / 10); } // Driver code int main(void) { long long n = 345289467; cout << "Number of digits :" << countDigit(n); return 0; } // This code is contributed by Mukul Singh. ``` C ```// Recursive C program to count number of // digits in a number #include <stdio.h> int countDigit(long long n) { if (n/10 == 0) return 1; return 1 + countDigit(n / 10); } // Driver code int main(void) { long long n = 345289467; printf("Number of digits : %d", countDigit(n)); return 0; } ``` Java ```// JAVA Code to count number of // digits in an integer import java.util.*; class GFG { static int countDigit(long n) { if (n/10 == 0) return 1; return 1 + countDigit(n / 10); } /* Driver code */ public static void main(String[] args) { long n = 345289467; System.out.print("Number of digits : " + countDigit(n)); } } // This code is contributed by Arnav Kr. Mandal. ``` Python3 ```# Recursive Python program to count # number of digits in a number def countDigit(n): if n//10 == 0: return 1 return 1 + countDigit(n // 10) # Driver Code n = 345289467 print("Number of digits : % d" % (countDigit(n))) # This code is contributed by Shreyanshi Arun ``` C# ```// C# Code to count number of // digits in an integer using System; class GFG { static int countDigit(long n) { if (n/10 == 0) return 1; return 1 + countDigit(n / 10); } /* Driver Code */ public static void Main() { long n = 345289467; Console.WriteLine("Number of " + "digits : " + countDigit(n)); } } // This code is contributed by anuj_67. ``` Javascript ```function countDigit(n) { if (parseInt(n / 10) === 0) return 1; return 1 + countDigit(parseInt(n / 10)); } // Driver code var n = 345289467; console.log("Number of digits: " + countDigit(n)); ``` PHP ```<?php // Recursive PHP program to count // number of digits in a number function countDigit(\$n) { if (\$n/10 == 0) return 1; return 1 + countDigit((int)(\$n / 10)); } // Driver Code \$n = 345289467; print ("Number of digits : " . (countDigit(\$n))); // This code is contributed by mits ?> ```

Output
`Number of digits :9`

Time Complexity : O(log(n))Â
Auxiliary Space : O(log(n))

## Log-based Solution to count digits in an integer

We can use log10(logarithm of base 10) to count the number of digits of positive numbers (logarithm is not defined for negative numbers).
Digit count of N = upper bound of log10(N).Â

Below is the implementation of the above idea:

C++ ```// Log based C++ program to count number of // digits in a number #include <bits/stdc++.h> using namespace std; int countDigit(long long n) { return floor(log10(n) + 1); } // Driver code int main(void) { long long n = 345289467; cout << "Number of digits : " << countDigit(n); return 0; } // This code is contributed by shivanisinghss2110 ``` C ```// Log based C program to count number of // digits in a number #include <math.h> #include <stdio.h> int countDigit(long long n) { return floor(log10(n) + 1); } // Driver code int main(void) { long long n = 345289467; printf("Number of digits : %d", countDigit(n)); return 0; } ``` Java ```// JAVA Code to count number of // digits in an integer import java.util.*; class GFG { static int countDigit(long n) { return (int)Math.floor(Math.log10(n) + 1); } /* Driver code */ public static void main(String[] args) { long n = 345289467; System.out.print("Number of digits : " + countDigit(n)); } } // This code is contributed by Arnav Kr. Mandal. ``` Python3 ```# Log based Python program to count number of # digits in a number # function to import ceil and log import math def countDigit(n): return math.floor(math.log10(n)+1) # Driver Code n = 345289467 print("Number of digits : % d" % (countDigit(n))) # This code is contributed by Shreyanshi Arun ``` C# ```// C# Code to count number of // digits in an integer using System; class GFG { static int countDigit(long n) { return (int)Math.Floor(Math.Log10(n) + 1); } /* Driver code */ public static void Main() { long n = 345289467; Console.WriteLine("Number of digits : " + countDigit(n)); } } // This code is contributed by anuj_67.. ``` Javascript ```<script> // Log based Javascript program to count number of // digits in a number function countDigit(n) { return Math.floor(Math.log10(n) + 1); } // Driver code var n = 345289467; document.write("Number of digits : " + countDigit(n)); // This code is contributed by noob2000 </script> ``` PHP ```<?php // Log based php program to // count number of digits // in a number function countDigit(\$n) { return floor(log10(\$n)+1); } // Driver code \$n = 345289467; echo "Number of digits : ", countDigit(\$n); // This code is contributed by ajit ?> ```

Output
`Number of digits : 9`

Time Complexity: O(1) or constant
Auxiliary Space: O(1) or constant

## Converting given number to string solution to count digits in an integer

We can convert the number into a string and then find the length of the string to get the number of digits in the original number.

Note: It gives TLE for numbers other than range of int,example long and long long .

C++ ```#include <bits/stdc++.h> using namespace std; // To count the no. of digits in a number void count_digits(int n) { // converting number to string using // to_string in C++ string num = to_string(n); // calculate the size of string cout << num.size() << endl; } //Driver Code int main() { // number int n = 345; count_digits(n); return 0; } // This code is contributed by Shashank Pathak ``` Java ```import java.util.*; public class GFG { // To count the no. of digits in a number static void count_digits(int n) { // converting number to string using // to_string in C++ String num = Integer.toString(n); // calculate the size of string System.out.println(+num.length()); } // Driver code public static void main(String args[]) { // number int n = 345; count_digits(n); } } // Code is contributed by shivanisinghss2110 ``` Python3 ```# Python3 implementation of the approach def count_digits(n): n = str(n) return len(n) # Driver code n = 456533457776 print(count_digits(n)) ``` C# ```// C# implementation of the above approach using System; using System.Collections.Generic; class GFG { // To count the no. of digits in a number static void count_digits(int n) { // converting number to string using // to_string in C# string num = Convert.ToString(n); // calculate the size of string Console.WriteLine(+num.Length); } // Driver Code public static void Main(string[] args) { // number int n = 345; count_digits(n); } } // This code is contributed by shivanisinghss2110 ``` Javascript ```<script> // Javascript implementation of the above approach // To count the no. of digits in a number function count_digits(n) { // converting number to string using // to_string in javascript let num = n.toString(); // calculate the size of string document.write(num.length); } // number let n = 345; count_digits(n); </script> ```

Output
`3`

Time Complexity: O(1) or constant
Auxiliary Space: Â O(Number of digits in an integer)