C Program to Calculate Generic Root of a Number

In this post, we will learn how to calculate the generic root of a number using C Programming language. But before that let’s learn about the generic root of a number.

Generic root of a number is the sum of all the digits of a given number until we get a single digit output. For example, if a number is 428, then it’s generic root will be 4 + 2 + 8 = 14, then 1 + 4 = 5.

The below program asks the user to enter a number, then it calculates the generic root of the entered number using the following approaches.

  1. Using Loops
  2. Using Functions

So, without further ado, let’s begin this tutorial.

C Program to Calculate Generic Root of a Number

// C Program to Calculate Generic Root of a Number
#include <stdio.h>
int main(){
    int num, rem, sum;
    
    // Asking for input
    printf("Enter a number: ");
    scanf("%d", &num);
    
    while (num >= 10){
        for (sum = 0; num > 0; num = num / 10){
            rem = num % 10;
            sum = sum + rem;
        }
        if (sum >= 10){
            num = sum;
        }
        else{
            printf("Generic root of the entered number is: %d", sum);
            break;
        }
    }
    return 0;
}

Output

Enter a number: 246
Generic root of the entered number is: 3

How Does This Program Work ?

    int num, rem, sum;

In the above program, we have declared three integer data type variables named num, rem and sum.

    // Asking for input
    printf("Enter a number: ");
    scanf("%d", &num);

The user is asked to enter a number. This number gets stored in the num named variable.

    while (num >= 10){
        for (sum = 0; num > 0; num = num / 10){
            rem = num % 10;
            sum = sum + rem;
        }
    }

The formula to calculate the generic tree of a number is to sum all digits of the number until we get a number less than 10.

Suppose, the user enters a number 246, then:

  1. 1st While Loop Iteration: (246 >= 10), here the condition is true. So, the following loop continues:
  • 1st For Loop Iteration: for (sum = 0; 246 > 0; 246 / 10)
  • rem = num % 10 = 246 / 10 = 6
  • sum = sum + rem = 0 + 6 = 6
  • 2nd For Loop Iteration: for (sum = 6; 24 > 0; 24 / 10)
  • rem = num % 10 = 24 / 10 = 4
  • sum = sum + rem = 6 + 4 = 10
  • 3rd For Loop Iteration: for (sum = 10; 2 > 0; 2 / 10)
  • rem = num % 10 = 2 / 10 = 2
  • sum = sum + rem = 10 + 2 = 12

Now, since sum = 12 > 10, the while loop performs a second iteration such that the value of num = sum.

  1. 2nd While Loop Iteration: (12 >= 10), here the condition is true. So,
  • 1st For Loop Iteration: for (sum = 0; 12 > 0; 12 / 10)
  • rem = num % 10 = 12 % 10 = 2
  • sum = sum + rem = 0 + 2 = 2
  • 2nd For Loop Iteration: for (sum = 2; 1 >0; 1 / 10)
  • rem = num % 10 = 1 % 10 = 1
  • sum = sum + rem = 2 + 1 = 3

We get sum = 3.

After that the loop terminates.

        if (sum >= 10){
            num = sum;
        }
        else{
            printf("Generic root of the entered number is: %d", sum);
            break;
        }

Now, since the sum >= 10 condition is false, the else statement continues and the generic root of the entered number is displayed on the screen using printf() function.

C Program to Calculate Generic Root of a Number Using Function

// C Program to Calculate Generic Root of a Number Using Functions
#include <stdio.h>

int genericRoot(int n){
    int rem, sum;
    for (sum = 0; n > 0; n = n / 10){
        rem = n % 10;
        sum = sum + rem;
    }
    return sum;
}

int main(){
    int num, sum;
    
    // Asking for input
    printf("Enter a number: ");
    scanf("%d", &num);
    
    // Calling out user-defined function
    while (num >= 10){
        sum = genericRoot(num);
        if (sum >= 10){
            num = sum;
        }
        else{
            printf("Generic root is: %d", num, sum);
            break;
        }
    }
    return 0;
}

Output

Enter a number: 456
Generic root is: 6

Conclusion

I hope after going through this post, you understand how to calculate the generic root of a number using C Programming language.

If you have any query regarding the program, then contact us in the comment section. We will be delighted to assist you.

Also Read:

Leave a Comment

Your email address will not be published. Required fields are marked *