这个,枚举到2n就可以了,其实还有一些小技巧,自己看吧
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
void cal(double k)
{
int n = 0;
for(double i = k + 1 ; i <= k * 2 ; i++)
if(k*i/(k-i) == floor(k*i/(k-i))){
n++;
}
printf("%d\n",n);
for(double i = k + 1 ; i <= k * 2 ; i++){
if(k*i/(k-i) == floor(k*i/(k-i))){
printf("1/%.0lf = 1/%.0lf + 1/%.0lf\n",k,k*i/(i-k),i);
}
}
}
int main()
{
double k;
while(~scanf("%lf",&k)){
cal(k);
}
return 0;
}