1 #include<cstdio> 2 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),
判断上式是否为整数即可。
时间: 2024-10-10 22:54:47