![]() ![]() |
|
C趣味程序(二)(04)求三位阶乘和数 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 13:58:57 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。 例如,145=1!+4!+5!,则145是一个三位阶详细和数。是否还有其它三位阶乘和数?共有多少个阶乘和数? 1.5.1 求三位阶乘和数 试求出所有三位阶乘和数:m=abc=a!+b!+c!(其中a为百位数字,b为十位数字,c为个位数字。约定0!=1)。 算法分析如下: 通过循环累乘设计一个求阶乘的函数:jc(x)=x! 对任意一个三位数m,分解其百位数字a,十位数字b,个位数字c。条件差判别:若m等于jc(a)+jc(b)+jc(c),则作打印输出。也可通过a,b,c三重循环组合为三位数m=a*100+b*10+c,然后作条件判别。 #include<stdio.h> long jc(int x); void main() { int a,b,c,m,n; printf("三位阶乘和数有:"); for(a=1;a<=9;a++) /*a,b,c分别为三位数的百位、十位、个位数字*/ for(b=0;b<=9;b++) for(c=0;c<=9;c++) { m=a*100+b*10+c; n=jc(a)+jc(b)+jc(c); /*阶乘和条件判别*/ if(m==n) printf("%d\n",m); } } long jc(int x) { int i; long p=1; for(i=1;i<=x;i++) p*=i; return p; } 程序运行结果: 三位阶乘和数有:145 注:可见三位阶乘和数只有一个 145 |
|
![]() ![]() |