
给定一个数字'n',我们需要检查给定的数字是否是强数。
强数是指其所有数字的阶乘之和等于数字'n'。阶乘是指将小于该数字的所有数字(包括该数字)相乘的结果,用!(感叹号)表示。例如:4!= 4x3x2x1 = 24。
因此,要确定一个数字是否是强数,我们需要提取数字的每一位,例如数字为145,则我们需要提取1、4和5,然后我们将计算每个数字的阶乘,即1!= 1,4!= 24,5!= 120。
现在我们将1 + 24 + 120相加,得到145,与给定的输入完全相同,因此我们可以说这个数字是强数。
示例
Input: n = 124124 Output: No it is not a strong number Explanation: 1! + 2! + 4! = 27 which is not equal to n i.e, 124124 Input: n = 145 Output: Yes it is a strong number Explanation: 1! + 4! + 5! = 145
下面使用的方法如下来解决问题 −
华友协同办公管理系统(华友OA),基于微软最新的.net 2.0平台和SQL Server数据库,集成强大的Ajax技术,采用多层分布式架构,实现统一办公平台,功能强大、价格便宜,是适用于企事业单位的通用型网络协同办公系统。 系统秉承协同办公的思想,集成即时通讯、日记管理、通知管理、邮件管理、新闻、考勤管理、短信管理、个人文件柜、日程安排、工作计划、工作日清、通讯录、公文流转、论坛、在线调查、
我们将 −
- 从个位数开始取每个数字,并找到其阶乘。
- 我们将这些数字的阶乘相加。
- 将结果与原始数字进行比较,如果它们相等,则该数字是强数;否则该数字不是强数。
算法
START
In Function int factorial(int r)
Step1 -> Initialize int fact and set as 1
Step2-> Loop while r>1
Set fact as fact * r
Decremnet r by 1
End Loop
Step 3-> Return fact
End Function factorial
In Function int check(int n)
Step 1-> Initialize int temp, rem and result, set result as 0
Step 2-> Set temp as n
Step 3-> Loop while temp
Set rem as temp % 10
Set result as result + factorial(rem)
Set temp as temp/10
End loop
Step 4-> If result == n then,
Return 1
Step 5-> Else
Return 0
End function check
In main(int argc, char const *argv[])
Step 1-> Initialise and set n as 145
Step 2->If check(n) is valid then,
Print "Yes it is a strong number”
Step 3-> Else
Print "no it is not a strong number”
STOP示例
实时演示
#includeint factorial(int r) { int fact = 1; while(r>1) { fact = fact * r; r--; } return fact; } int check(int n) { int temp, rem, result = 0; temp = n; while(temp) { rem = temp % 10; result = result + factorial(rem); temp = temp/10; } if (result == n) return 1; else return 0; } int main(int argc, char const *argv[]) { int n = 145; if (check(n)) printf("Yes it is a strong number "); else printf("no it is not a strong number
"); return 0; }
如果运行上述代码,将生成以下输出 −
Yes it is a strong number









