#include <stdio.h>
int main()
{
int a,b,n,s;
for(a=2;;a++)
{
for(b=a;;b++)
{
for(n=b;;n++)
{
for(s=n;s<=50;s++)
if((int)(1.0/a+1.0/b+1.0/n+1.0/s)==1 && a<=b && b<=n &&n<=s) break;
break;
}
break;
}
break;
}
printf("甲%d,乙%d,丙%d,丁%d",a,b,n,s);
return 0;
}
就是要1/a+1/b+1/n+1/s=1
(int)(1.0/a+1.0/b+1.0/n+1.0/s)==1这么写是不对的,浮点数有误差,如果四个数的倒数加起来是0.99999999,你(int)转换后是0
代码修改后如下
#include <stdio.h>
int main()
{
int a, b, n, s;
for (a = 2; a <= 50; a++)
{
for (b = a; b <= 50; b++)
{
for (n = b; n <= 50; n++)
{
for (s = n; s <= 50; s++)
if ((1.0/a+1.0/b+1.0/n+1.0/s)==1)
printf("甲%d,乙%d,丙%d,丁%d\n", a, b, n, s);
}
}
}
// printf("甲%d,乙%d,丙%d,丁%d", a, b, n, s);
return 0;
}