C趣味程序百例(23)和数能表示1~23的5个正整数
73的和可以代表1到23的五个正整数
。已知五个不同的正整数之和为23,这五个数中的某几个相加可以代表1到23的所有自然数。这五个数字是什么?
*问题分析与算法设计
从计算机编程的角度来看,可以用穷举法分解23,然后判断分解出的5个数是否能代表1到23之间的所有整数。
*程序和程序注释
# include
void main()
{
int a,b,c,d,e,I,j,k,l,m,x,count = 0,f /*f:分解后的5个数可以表示1到23的标志*/
printf("有以下可能结果:\ n ");
for(a = 1;a for(b = 1+a;b for(c = 1+b;c for(d = 1+c;d {
f = 1;
if((e = 23-a-b-c-d)> d)
for(f = 0,x = 1;x for(f=1,I = 0;I for(j = 0;j for(k = 0;k为(l = 0;l for(m = 0;m if(x = = a * I+b * j+c * k+d * l+e * m)f = 0;
如果(!f) printf("[%d]: %d %d %d %d %d\n ",++count,a,b,c,d,e);
}
}
*运行结果
*有以下可能的结果:
[1]:1 2 3 5 12
[2]:1 2 3 6 11
[3[4]:1 2 4 5 11
[5]:1 2 4 6 10
[6]:1 2 4 7 9
0条评论