C 语言强数程序

如何使用 While 循环、For 循环和递归函数编写 C 语言强数程序?本文还将介绍如何编写一个 C 程序来打印 1 到 n 之间的强数。

使用 While 循环的 C 语言强数程序

此程序允许用户输入任何正整数。然后,此程序将使用 While 循环检查该数字是否为强数。

#include <stdio.h>
 
int main()
{
  int Number, Temp, Reminder, Sum = 0, i; 
  long Factorial;
 
  printf("\nPlease Enter a Number to Check for Strong Number \n");
  scanf("%d", &Number);
  
  //Helps to prevent altering the original value
  Temp = Number;
  while( Temp > 0)
   {
     Factorial = 1, i = 1; 
     Reminder = Temp % 10;
     while (i <= Reminder)
     {
     	Factorial = Factorial * i;
     	i++;
     }
     printf("\n Factorial of %d = %d\n", Reminder, Factorial);
     Sum = Sum + Factorial;
     Temp = Temp /10;
   }
 
  printf("\n Sum of the Factorials of a Given Number %d is = %d\n", Number, Sum);
 
  if ( Number == Sum )
      printf("\n %d is a Strong Number.\n", Number);
  else
      printf("\n %d is not a Strong Number.\n", Number);
 
  return 0;
}
C Program For Strong Number 1

这个 C 语言强数程序允许用户输入任何正整数。它会将该数字分配给 Number 变量。

接下来,我们将原始值分配给 Temp 变量。这有助于我们在对 Temp 变量进行所有操作时保留原始值。

下面的 C 编程 While 循环将确保给定的数字大于 0,While 循环中的语句将拆分数字并查找给定数字中每个数字的阶乘。如果您不理解该逻辑,请参考 C 语言统计数字位数程序 文章。

在这里,C 强数程序中的第一个 while 循环(外部)将数字拆分成单个数字。接下来,内部 while 循环将计算该数字的阶乘。我建议您参考 C 语言求阶乘程序 文章来理解阶乘背后的逻辑。

此示例中用户输入的数值:Number = 145 and Sum = 0
Temp = Number
Temp = 145

第一次迭代
Reminder = Temp % 10
Reminder = 145 % 10 = 5

现在,它将进入内部 While 循环。在这里,它将计算 5 的阶乘,即 120。

Sum = Sum +120
Sum = 0 + 120 => 120

Temp = Temp /10
Temp = 145 /10 => 14

第二次迭代
从 C 语言判断强数程序的第一次迭代开始,Temp 和 Sum 的值都已更改为 Temp = 14 和 Sum = 120
Reminder = Temp % 10
Reminder = 14 % 10 = 4

现在,它将进入内部 While 循环。在这里,它将计算 4 的阶乘,即 24。
Sum = 120 + 24
Sum = 144

Temp = 14 /10 => 1

第三次迭代
从强数程序的第三次迭代开始,两个值都已更改为 Temp = 1 和 Sum = 144
Reminder = 1 % 10 = 0

这里,1 的阶乘是 1
Sum = 144 + 1 = 145

Temp = 1 / 10 => 0

这里,Temp = 0,因此 while 循环条件将失败

if ( Number== Sum ) – 条件将检查用户输入的数字是否严格等于 Sum 数字。如果此条件为 True,则它是强数。否则,它不是。

在这个强数程序中,我将用另一个值进行检查

Please Enter a Number to Check
153

 Factorial of 3 = 6

 Factorial of 5 = 120

 Factorial of 1 = 1

 Sum of the Factorials of a Given Number 153 is = 127

 153 is not.

使用 For 循环的 C 语言强数程序

此程序允许用户输入任何正整数。然后,此程序将使用 For 循环检查该数字是否为强数。

#include <stdio.h>
 
int main()
{
  int Num, Temp, Reminder, Sum = 0, i; 
  long Factorial;
 
  printf("\nPlease Enter a Number \n");
  scanf("%d", &Num);
  
  //Helps to prevent altering the original value
  Temp = Num;
  for(Temp = Num; Temp > 0; Temp =  Temp / 10 )
   {
     Factorial = 1;  
     Reminder = Temp % 10;
     for (i = 1; i <= Reminder; i++)
     {
     	Factorial = Factorial * i;
     }
     printf(" Fact of %d = %d\n", Reminder, Factorial);
     Sum = Sum + Factorial;
    }
 
  printf("\n Sum of the Factorials of %d is = %d\n", Num, Sum);
 
  if ( Number == Sum )
      printf("\n %d is a Strong.\n", Num);
  else
      printf("\n %d is not.\n", Num);
 
  return 0;
}

让我用另一个数字来检查。

Please Enter a Number to Check 
26
 Factorial of 6 = 720
 Factorial of 2 = 2

 Sum of the Factorials of 26 is = 722

 26 is not.

我们只是用 For 循环替换了上面强数示例中的 While 循环。如果您不理解,请参考此处的文章:For 循环

使用递归检查强数的 C 程序

程序允许您输入任何正整数。然后,此程序将使用 递归 或递归函数概念检查该数字是否为强数。在这里,您也可以尝试使用普通 函数来计算阶乘。

#include <stdio.h>

long Calculate_Factorial(int); 

int main()
{
  int Number, Temp, Reminder, Sum = 0; 
  long Factorial;
 
  printf("\nPlease Enter a Number to Check \n");
  scanf("%d", &Number);
  
  //Helps to prevent altering the original value
  Temp = Number;
  for(Temp = Number; Temp > 0; Temp =  Temp / 10 )
  {
     Factorial = 1;  
     Reminder = Temp % 10;

     // Calling Calculate_factorial Function
     Factorial = Calculate_Factorial(Reminder);

     printf("Factorial of %d = %d\n", Reminder, Factorial);
     Sum = Sum + Factorial;
   }
 
   printf("\nSum of the Factorials of %d is = %d\n", Number, Sum);
 
   if ( Number == Sum )
      printf("\n%d is a Strong.\n", Number);
   else
      printf("\n%d is not.\n", Number);
 
   return 0;
}

long Calculate_Factorial(int Number)
{ 
  if (Number == 0 || Number == 1)  
    return 1;
  
  else
    return Number * Calculate_Factorial (Number -1);
}
Program to Check Strong Number Using Recursion

查找 1 到 n 之间的强数的 C 程序

这允许用户输入最小值和最大值。此程序将查找最小值和最大值之间的强数。

#include <stdio.h>

int SrNum(int); 

int main()
{
  int Number, Temp, Sum = 0, Minimum, Maximum; 
 
  printf("\nPlease Enter the Minimum & Maximum Values\n");
  scanf("%d %d",&Minimum, &Maximum);
  
  for(Number = Minimum; Number <= Maximum; Number++)
  {
  	Temp = Number;
	Sum = SrNum(Temp);
    if ( Number == Sum )
        printf("\n%d is a Strong Number.\n", Number);
  }
  return 0;
}
long CalFact(int Num)
{ 
  if (Num == 0 || Num == 1)  
    return 1;
  else
    return Num * CalFact(Num -1);
}
int SrNum(int Num)
{
	int Temp, Reminder, Sum = 0; 
	long Factorial;
	Temp = Num;
	for(Temp = Num; Temp > 0; Temp =  Temp / 10 )
	{
	   	Factorial = 1;  
	    Reminder = Temp % 10;
	    Factorial = CalFact(Reminder);
	    Sum = Sum + Factorial;
	}
	return Sum;
}
Program to Print Strong Numbers between the 1 to n

此程序允许用户输入最小值和最大值。接下来,下面显示的 For 循环有助于编译器在最小值和最大值变量之间进行迭代。迭代从最小值开始。然后,它不会超过最大变量。