Friday, September 20, 2024
Google search engine
HomeData Modelling & AIC program to Count the digits of a number

C program to Count the digits of a number

Given a number N, write a C program to find the count of digits in the number N

Examples:

Input: N = 12345 
Output: 5 
Explanation: The count of digit in 12345 = 5
 
Input: N = 23451452 
Output: 8 
Explanation: The count of digits in 23451452 = 8

Methods to Count Digits of a Number

There are a few methods to count the digits of a number mentioned below:

  • Using Loops
  • Logarithmic Approach
  • Using Recursion
  • Using Repeated Multiplication
  • By Dividing with Powers of Two

1. Using Loops

The count of digits in a number can be found efficiently in a few steps:

  1. Remove the last digit of the number by dividing it by 10.
  2. Increment the count of digits by 1.
  3. Keep repeating steps 1 and 2 until the value of N becomes 0. In this case, there will be no more digits left in the number to count.

Example:

C




// C Program to Find Count of
// Digits in a Number
// Using Loops
#include <stdio.h>
 
// Find the count of digits
int findCount(int n)
{
    int count = 0;
 
    // Remove last digit from number
    // till number is 0
    while (n != 0) {
 
        // Increment count
        count++;
        n /= 10;
    }
 
    // return the count of digit
    return count;
}
 
// Driver program
int main()
{
    int n = 98562;
    printf("Count of digits in %d = %d\n", n, findCount(n));
    return 0;
}


Output

Count of digits in 98562 = 5

The complexity of the above method

Time complexity: O(D), where D is the count of digits in the number N. 

Auxiliary Space: O(1)

2. Logarithmic Approach

Below is the C program to count the number of digits in a number without using a loop:

C




// C Program to Count the Number
// Of Digits in a Number
// Using Logarithmic Approach
#include <math.h>
#include <stdio.h>
 
// Driver code
int main()
{
    int n = 98562;
    int count = 0;
 
    count = (n == 0) ? 1 : log10(n) + 1;
    printf("Count of digits in %d = %d\n", n, count);
    return 0;
}


Output

Count of digits in 98562 = 5

3. Using Recursion

Below is the C program to count the number of digits using functions:

C




// C Program to Count the Number
// Of digits in a number
// Using Recursion
#include <stdio.h>
 
int Count_Of_Digits(int n)
{
    static int Count = 0;
 
    if (n > 0) {
        Count = Count + 1;
        Count_Of_Digits(n / 10);
    }
 
    return Count;
}
 
// Driver code
int main()
{
    int n = 98562, Count = 0;
    Count = Count_Of_Digits(n);
 
    printf("Count of digits in %d = %d\n", n, Count);
    return 0;
}


Output

Count of digits in 98562 = 5

4. Using Repeated Multiplication

Below is the C program to count the number of digits in a number using repeated multiplication:

C




// C Program to Count the Number
// Of Digits in a Number
// Using Repeated Multiplication
#include <stdio.h>
 
// function to find the count
// the number
int findCount(unsigned int n)
{
    unsigned int count = 0;
    unsigned int temp = 1;
    while (temp <= n) {
        count++;
        temp *= 10;
    }
    return count;
}
 
// Driver code
int main()
{
    unsigned int n = 98523, digits;
 
    // call function to count digit
    digits = findCount(n);
    printf("Count of digits in %d = %d\n", n, digits);
    return 0;
}


Output

Count of digits in 98523 = 5

5. By Dividing with Powers of Two

Below is the C program to count the number of digits in a number by dividing with powers of two:

C




// C Program to Count the Number
// Of Digits in a Number
// By Dividing with Powers of Two
#include <stdio.h>
 
int findCount(unsigned int n)
{
    int count = 1;
 
    if (n >= 100000000) {
        count += 8;
        n /= 100000000;
    }
 
    if (n >= 10000) {
        count += 4;
        n /= 10000;
    }
 
    if (n >= 100) {
        count += 2;
        n /= 100;
    }
 
    if (n >= 10) {
        count += 1;
    }
 
    return count;
}
 
// Driver code
int main()
{
    unsigned int n = 98532, digits;
 
    // call function to count digit
    digits = findCount(n);
   
    printf("Count of digits in %d = %d\n", n, digits);
    return 0;
}


Output

Count of digits in 98532 = 5
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments