遇到了麻烦,请高手帮一下忙!
奇伢 2003-06-08 05:08:56 #include<stdio.h>
void main()
{
int n;
int xrangemin,xrangemax;
int yrangemin,yrangemax;
int i,j,k;
int counter;
int nxy,xyn;
int t;
struct timeb t1,t2;
printf("=============Problem of mathmatics==============\n");
printf("===============Input n please:=============\n");
scanf("%d",&n);
/*printf("%d\n",n);*/
xrangemin=n/4;
xrangemax=(3*n/4);
/*printf("%d\n",xrangemin);*/
/*printf("%d\n",xrangemax);*/
ftime(&t1);
for(i=xrangemin;i<=xrangemax;i++)
{
if(n!=4*i)
{
yrangemax=(i*n/(i+i+i+i-n)*2);
/*printf("%d\n",yrangemax);*/
for(j=i;j<=yrangemax;j++)
{
nxy=n*i*j;
xyn=4*i*j-n*i-n*j;
/*printf("%d,%d\n",nxy,xyn);*/
if(xyn>0)
{
if(nxy%xyn==0)
{
k=(int)(nxy/xyn);
if(k>0)
{
counter=counter+1;
printf("%d,%d,%d\t\n",i,j,k);
}
}
}
} }
}
printf("===========The total number is %d================\n",counter);
ftime(&t2);
}
我要的是求出4/n=1/x+1/y+1/z的所有的正整数的解,x,y,z之间的排序算一个解,
例如:4/8=1/6+1/6+1/6=1/5+1/10+1/10=1/4+1/8+1/8=.....=....
用Turboc2编译的时候是通的过。算出当n=8的时候,算出来的是正确的当n=61的时候不正确了,而且出先了负数。我怀疑是超出了整型范围,不知道怎么改啊,请高手帮忙!我要算到n至少要等于2000以上,请高手帮我,我明天要给别人了!