编写一个 C++ 程序来查找强数,并附带一个示例。如果一个数字的各位数字的阶乘之和等于该数字本身,则该数字是强数。例如,145 的各位数字的阶乘 = 1! + 4! + 5! = 1 + 24 + 120 = 145。因此,145 是一个完美数。
在此强数示例中,我们使用了余数 = temp % 10 来获取数字的最后一位。接下来,我们使用 for 循环查找该数字的阶乘。最后,我们使用 If 条件来检查该数字是否等于阶乘之和,并打印结果。
#include<iostream>
using namespace std;
int main()
{
int i, number, temp, reminder;
long sum = 0, factorial = 1;
cout << "\nPlease Enter the Number to Check for Strong Number = ";
cin >> number;
for(temp = number; temp > 0; temp = temp / 10 )
{
factorial = 1;
reminder = temp % 10;
for (i = 1; i <= reminder; i++)
{
factorial = factorial * i;
}
cout << "\nThe Factorial of "<< reminder << " = " << factorial;
sum = sum + factorial;
}
cout << "\n\nThe Sum of the Factorials of " << number << " is = " << sum << "\n\n";
if(number == sum)
{
cout << number << " is a Strong Number";
}
else
{
cout << number << " is Not a Strong Number";
}
return 0;
}

下面的程序将使用 While 循环查找或检查强数
#include<iostream>
using namespace std;
int main()
{
int i, number, temp, reminder;
long sum = 0, factorial = 1;
cout << "\nPlease Enter the Number to Check for Strong Number = ";
cin >> number;
temp = number;
while(temp > 0)
{
factorial = 1;
i = 1;
reminder = temp % 10;
while (i <= reminder)
{
factorial = factorial * i;
i++;
}
cout << "\nThe Factorial of "<< reminder << " = " << factorial;
sum = sum + factorial;
temp = temp / 10;
}
cout << "\nThe Sum of the Factorials of " << number << " is = " << sum << "\n\n";
if(number == sum)
{
cout << number << " is a Strong Number";
}
else
{
cout << number << " is Not a Strong Number";
}
return 0;
}
Please Enter the Number to Check for Strong Number = 127
The Factorial of 7 = 5040
The Factorial of 2 = 2
The Factorial of 1 = 1
The Sum of the Factorials of 127 is = 5043
127 is Not a Strong Number
C++ 程序使用递归函数查找强数
在此 C++ 示例中,long factorialOfNumber(int number) 方法用于查找数字的阶乘。
#include<iostream>
using namespace std;
long factorialOfNumber(int number)
{
if (number == 0 || number == 1)
return 1;
else
return number * factorialOfNumber(number - 1);
}
int main()
{
int number, temp, reminder;
long sum = 0, factorial = 1;
cout << "\nPlease Enter the Number to Check for Strong Number = ";
cin >> number;
for(temp = number; temp > 0; temp = temp / 10 )
{
factorial = 1;
reminder = temp % 10;
factorial = factorialOfNumber(reminder);
cout << "\nThe Factorial of "<< reminder << " = " << factorial;
sum = sum + factorial;
}
cout << "\n\nThe Sum of the Factorials of " << number << " is = " << sum << "\n\n";
if(number == sum)
{
cout << number << " is a Strong Number";
}
else
{
cout << number << " is Not a Strong Number";
}
return 0;
}
Please Enter the Number to Check for Strong Number = 40585
The Factorial of 5 = 120
The Factorial of 8 = 40320
The Factorial of 5 = 120
The Factorial of 0 = 1
The Factorial of 4 = 24
The Sum of the Factorials of 40585 is = 40585
40585 is a Strong Number
C++ 程序打印 0 到 N 之间的强数
此强数示例允许用户输入最小值和最大值。接下来,它将打印 min 和 max 值之间的强数。
#include<iostream>
using namespace std;
long factorialOfNumber(int number)
{
if (number == 0 || number == 1)
return 1;
else
return number * factorialOfNumber(number - 1);
}
long strongNumber(int number)
{
int temp, reminder;
long sum = 0, factorial;
temp = number;
for(temp = number; temp > 0; temp = temp / 10 )
{
factorial = 1;
reminder = temp % 10;
factorial = factorialOfNumber(reminder);
sum = sum + factorial;
}
return sum;
}
int main()
{
int number, temp, minimum, maximum ;
long sum = 0;
cout << "\nPlease Enter Minimum and Maximum for Strong Numbers = ";
cin >> minimum >> maximum;
for(number = minimum; number <= maximum; number++ )
{
temp = number;
sum = strongNumber(temp);
if(number == sum)
{
cout << number << " is a Strong Number" << endl;
}
}
return 0;
}
Please Enter Minimum and Maximum for Strong Numbers = 1 100000
1 is a Strong Number
2 is a Strong Number
145 is a Strong Number
40585 is a Strong Number