1 #include2 int a[30010],b[30010]; 3 int main() 4 { 5 int i,j,k,l,m,n,x,y,z; 6 while (scanf("%d",&k)==1) 7 { 8 n=0; 9 for (i=k+1;i<=2*k;i++)10 if ((k*i)%(i-k)==0)11 {12 a[++n]=k*i/(i-k);13 b[n]=i;14 }15 printf("%d\n",n);16 for (i=1;i<=n;i++)17 printf("1/%d = 1/%d + 1/%d\n",k,a[i],b[i]);18 }19 }
编程很简单,关键在于数学推导。
∵x≥y
∴1/x≤1/y
∴1/k=1/x+1/y≤2/y
即y≤2k
又易知y>k
在此范围内枚举即可。
验证时,
由1/k=1/x+1/y
得x=ky/(y-k),
判断上式是否为整数即可。