强数是指其所有数字的阶乘之和等于数字’n’。阶乘是指将小于该数字的所有数字(包括该数字)相乘的结果,用!(感叹号)表示。例如:4!= 4x3x2x1 = 24。
因此,要确定一个数字是否是强数,我们需要提取数字的每一位,例如数字为145,则我们需要提取1、4和5,然后我们将计算每个数字的阶乘,即1!= 1,4!= 24,5!= 120。
现在我们将1 + 24 + 120相加,得到145,与给定的输入完全相同,因此我们可以说这个数字是强数。
示例
Input: n = 124Output: No it is not a strong numberExplanation: 1! + 2! + 4! = 27 which is not equal to n i.e, 124Input: n = 145Output: Yes it is a strong numberExplanation: 1! + 4! + 5! = 145
登录后复制
下面使用的方法如下来解决问题 −
我们将 −
从个位数开始取每个数字,并找到其阶乘。我们将这些数字的阶乘相加。将结果与原始数字进行比较,如果它们相等,则该数字是强数;否则该数字不是强数。
算法
STARTIn 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 factorialIn 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 checkIn 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 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
登录后复制
以上就是C程序检查强数的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2583259.html