C++ 程序查找强数

编写一个 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;
}
C++ Program to find the Strong Number Example

下面的程序将使用 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