遇到了麻烦,请高手帮一下忙!

奇伢 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以上,请高手帮我,我明天要给别人了!

...全文
79 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2003-06-08
  • 打赏
  • 举报
回复
系统上的整数最多只能表示到2的31次方,再大就需要你自己定义大整数类型了。

而这决不是个小问题。

不过你可以搜索一下,前段时间许多网友问关于求1000的阶乘问题,实质上也是大整数的保存和运算问题。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧