求这样的四个自然数p,q,r,s(p<=q<=r<=s),使得以下等式成立:
1/p 1/q 1/r 1/s=1
*问题分析与算法设计
若规定p<=q<=r<=s,将原式通分、化简并整理后得到:
2<=p<5
p<=q<7 q<
p="">
采用最简单的穷举方法可以很方便的求解。
程序与程序注释:
#include
int main()
{
int p,q,r,s,count=0;
printf("The 4 fractions which sum is equal 1 are:\n");
for(p=2;p<5;p )
for(q=p;q<7;q )
for(r=q;r<13;r )
if(p*q*r-q*r-p*r-p*q!=0)
{
s=(p*q*r)/(p*q*r-q*r-p*r-p*q);
if(!((p*q*r)%(p*q*r-q*r-p*r-p*q))&&s>=r)
printf("[-] 1/%d 1/%d 1/%d 1/%d=1\n", count,p,q,r,s);
}
}
*思考题
将1、2、3、4、5、6、7、8、9九个数字分成以下三种分数形式之一,每个数字只能用一次,使得该分数刚好等于一个整数。
求所有满足条件的表示形式。
(参考答案:某些自然数没有这种表示形式,如:1、2、3、4、15、18等。此外整数100有11种满足条件的表示形式;89的表示形式最多,共有36种;三种形式中,最大可表示的整数为794。)