C语言程序检查强数
给定一个数字'n',我们需要检查给定的数字是否为强数。
强数是一个数字,其所有数字的阶乘之和等于数字'n'。阶乘是指当我们找到包括该数字在内的该数字下方所有数字的乘积时,并用!(感叹号)表示,例如:4!= 4x3x2x1 = 24。
因此,要查找一个数字是否为强数,我们必须选择该数字的每个数字,例如数字是 145,那么我们必须选择 1、4 和 5,现在我们将找到每个数字的阶乘,即 1!= 1、4!= 24、5!= 120。
现在我们将 1 + 24 + 120 相加,因此我们得到 145,这与给定的输入完全相同,因此我们可以说该数字是强数。
示例
Input: n = 124 Output: No it is not a strong number Explanation: 1! + 2! + 4! = 27 which is not equal to n i.e, 124 Input: n = 145 Output: Yes it is a strong number Explanation: 1! + 4! + 5! = 145
下面使用的解决问题的方法如下 −
我们将 −
- 从个位数开始取每个数字并找到它的阶乘。
- 我们将添加每个数字的这些阶乘。
- 将结果与原始数字进行比较,如果它们相等,则该数字为强数;否则该数字不是强数。
算法
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
示例
#include <stdio.h> int 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
广告