这个问题的解是无穷的。
思路一:
例:3/7
3/7=1/7+1/7+1/7
=1/7+2/14+3/21
=1/7+1/14+1/14+1/21+1/21+1/21+1/21
=。。。。。
你的思路1我觉得不对劲。你这么分解总存在相同的加数,除非象你说的无穷,那不等于每解决吗?因为我要加数个数尽量小……
思路二我真的看不太懂……
大家再想想吧,体会一下,说不定会又意外的收获哦。
1. 我只是提供几种如何分解的思路,并不是针对你的问题的答案。
2. 我说的无穷的意思,不是此题的解无穷,而是拆分 (a/b) 有无穷解.
3. 第二种思路的实现代码(不是此问题的解答):
long int fun(long int n,long int N); main() { long int n,N;//即 : n / N long int a,b; long int f;
printf("请输入(n/N),n="); scanf("%ld",&n); printf("N="); scanf("%ld",&N); for(;;) { a=N/n+1; printf("1/%ld\n",a); b=N; N=N*a; n=n*a; a=N; n-=b; f=fun(n,N);// 求最大公约数 n/=f; N/=f; if(n==1){printf("1/%ld\n",N);break;} }
} long int fun(long int n,long int N) { int r; r=n % N; while(r!=0) { n=N; N=r; r=n%N; }
return N; }
4。 TO :LIVE41
此问题由楼主的题中:
首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越 好。
引出的。即加数少的比加数多的好
我的意思就是 :
对于任意分数 a/b (a<b) 其最少的加数是多少?
只要
对任意分数 a/b (a<b), y= -bx / (b-ax) y 一定有个整数解
不能被证明是个假命题,那么,对于任意 a/b 楼主所谓的"加数"的最少个数 都是2个。
现在我就是对这个命题无法证明其是真命题还是假命题。
如果是真命题(我看着象是真的,但无法证明),那么,楼主给的示例的答案就是错的。
Oh, i c! let me think about it.
think for a short time...
不是的,大哥你是错觉了,因为你用的是3/7,你尝试用楼主的19/45,留意:
此时是: y = bx / (ax - b) = 45x / (19x - 45) // x的最小值开始变化
先不讨论分子变化,看ax-b,这里只要b向正无穷大推进,而a向正无穷小推进, 那得到的就不是x随便取值,因此(2<= x <= 无穷大)是错误判断,而应该判断为,
对于x,存在一个数,只要在这个数的后面取整数x,使ax-45大于0才成立。
小弟我觉得原命题这样才为真,不对请指正!
[此贴子已经被作者于2004-07-29 00:28:34编辑过]
Oh, i c! let me think about it.
think for a short time...
不是的,大哥你是错觉了,因为你用的是3/7,你尝试用楼主得19/45,留意:
此时是: y = bx / (ax - b) = 45x / (19x - 45) // x的最小值开始变化
先不讨论分子变化,看ax-b,这里只要b向正无穷大推进,而a向正无穷小推进, 那得到的就不是x随便,因为(2<= x <= 无穷大)是错误判断,而应该判断为,
对于x,存在一个数,只要在这个数的后面取整数x,使ax-45大于0才成立。
小弟我觉得原命题这样才为真,不对请指正!
你说的是对的。