本文共 657 字,大约阅读时间需要 2 分钟。
现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y.
22 12
1/2=1/6+1/31/2=1/4+1/41/12=1/156+1/131/12=1/84+1/141/12=1/60+1/151/12=1/48+1/161/12=1/36+1/181/12=1/30+1/201/12=1/28+1/211/12=1/24+1/24
思路,利用式子做处理
1/k = 1/x + 1/y,x>=y>k;
xy = k*(x+y); -> x = ky / (y-k),是一个整数,即整除x == y时
y*y = k*2y -> y = 2k;最大值#includeint main(){ int m; scanf("%d",&m); while (m--) { int k; int x,y; scanf("%d",&k); for (y=k+1; y<=2*k; y++) { if ((k*y)%(y-k) == 0) { x = (k*y)/(y-k); printf("1/%d=1/%d+1/%d\n",k,x,y); } } } return 0;}
转载地址:http://zhmbn.baihongyu.com/