输入正整数看,找到所有的正整数x>=y,使得 1/k = 1/x + 1/y 。
样列输入:
2
12
样列输出
2
1/2=1/6+1/3
1/2=1/4+1/4
12
1/12=1/156+1/13
1/12=1/84+1/14
1/12=1/60+1/15
1/12=1/48+1/16
1/12=1/36+1/18
1/12=1/30+1/20
1/12=1/28+1/21
1/12=1/24+1/24
1/k = 1/x + 1/y x>=y 则1/x <=1/y 即 1/k - 1/y= 1/x <=1/y 即 y<=2k。
x = ky/(y-k) x>0 且为正整数 则y>k且ky能被(y-k)整除
#include<iostream>
#include<cstdio>using namespace std;
int main() {
int k;
while (cin >> k) {
int x, y;
for (y = k + 1; y <= 2 * k; ++y) {
if (!((k * y) % (y - k))) {
x = (k * y) / (y - k);
if (x >= y) {
cout << "1/" << k << "=" << "1/" << x << "+" << "1/" << y
<< endl;
}
}
}
}
return 0;
}