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

• Difficulty Level : Easy
• Last Updated : 09 Jun, 2022

Count the number of digits in a long integer entered by a user. Method 1:

Simple Iterative Solution
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).

1. After the first iteration, the value of n will be 345 and the count is incremented to 1.
2. After the second iteration, the value of n will be 34 and the count is incremented to 2.
3. After the third iteration, the value of n will be 3 and the count is incremented to 3.
4. At the start of the fourth iteration, the value of n will be 0 and the loop is terminated.

Then the test expression is evaluated for false and the loop terminates.

## C++

 `// Iterative C++ program to count``// number of digits in a number``#include ``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 ` `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``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.`

## PHP

 ``

## Javascript

 ``

Output

`Number of digits : 9`
• Time Complexity : O(n) or linear
• Auxiliary Space : O(1) or constant

Method 2:

Recursive Solution:

## C++

 `// Recursive C++ program to count number of``// digits in a number``#include ``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 ` `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.`

## PHP

 ``

## Javascript

 ``

Output

`Number of digits :9`
• Time Complexity : O(log(n))
• Auxiliary Space : O(log(n))

Method 3:

Log-based Solution:
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)

## C++

 `// Log based C++ program to count number of``// digits in a number``#include ``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 ``#include ` `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..`

## PHP

 ``

## Javascript

 ``

Output

`Number of digits : 9`
• Time Complexity : O(1) or constant
•  Auxiliary Space : O(1) or constant

Method 4:
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.

## C++

 `#include ``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

 ``

Output

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

Here in all these four different methods to count the number of digits in an integer , the best approach will be the Method : 3 as the time complexity as well as auxiliary space both are constant , so our program will run in constant time and takes constant space in terms of input size.

This article is contributed by Suruchi Kumari . If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.