C趣味程序(二)(04)求所有阶乘和数

文章作者 100test 发表时间 2007:03:10 17:33:25
来源 100Test.Com百考试题网


1.5.2 求所有阶乘和数
算法分析如下:
设阶乘和数的位数为n,n可以为1,2... 容易证明:n<8
事实上,若阶乘和数达到8位(或更大),阶乘和最大(即设定每位数字都为9)也要比最小的8位数小,即:
8X9!=8*362880<10000000
由此可见,阶乘和数最多只能为7位
设置a,b,c,d,e,f,g共7重循环,在所有1~7位整数中搜索,寻找满足阶乘和条件的数,这样可找出所有阶乘和数。
程序代码如下:
#include
long jc(int x).
void main()
{
int a,b,c,d,e,f,g.
long m1,m2,m3,m4,m5,m6,n1,n2,n3,n4,n5,n6.
printf("所有阶乘和数有: ").
for(a=1.a<=9.a )
{
if(a==jc(a)) printf("%d ",a). /*1位数a满足条件则输出*/
for(b=0.b<=9.b )
{
m1=a*10 b.
n1=jc(a) jc(b).
if(m1==n1) printf("%ld ",m1). /*判别2位数m1*/
for(c=0.c<=9.c )
{
m2=m1*10 c.
n2=n1 jc(c).
if(m2==n2) printf("%ld ",m2). /*判别3位数m2*/
for(d=0.d<=9.d )
{
m3=m2*10 d.
n3=n2 jc(d).
if(m3==n3) printf("%ld ",m3). /*判别4位数m3*/
for(e=0.e<=9.e )
{
m4=m3*10 e.
n4=n3 jc(e).
if(m4==n4) printf("%ld ",m4). /*判别5位数m4*/
for(f=0.f<=9.f )
{
m5=m4*10 f.
n5=n4 jc(f).
if(m5==n5) printf("%ld ",m5). /*判别6位数m5*/
for(g=0.g<=9.g )
{
m6=m5*10 g.

相关文章


C趣味程序(二)(04)求三位阶乘和数
全国计算机等级考试有重大变化
计算机等级考试今年大幅调整一级笔试取消
C趣味程序(二)(04)求所有阶乘和数
全国计算机等级考试二级Access考点分析之窗体(1)
浙江省高校计算机等级考试-大纲(三级)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛