# 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;

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;

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.