少一个for 多了个do-while
这样是可以,但有的时候根本不需要搞那么复杂
[此贴子已经被作者于2006-5-5 6:38:42编辑过]

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
少一个for 多了个do-while
这样是可以,但有的时候根本不需要搞那么复杂
[此贴子已经被作者于2006-5-5 6:38:42编辑过]
#include<stdio.h>
typedef unsigned long UI4;
int isN2(UI4 x)
{ UI4 y0,
y1=x/2;
do
{
y0=y1;
y1=(y0+x/y0)/2;
}
while(y1<y0);
return(y1*y1==x?y1:0);
}
/*输出1000以内的勾股数0<a<b<c<=1000*/
int main()
{ int len=0,ans=0;
UI4 a,a2,b,c,c2;
for(a=1;a<1000;a++)
{a2=a*a;b=a;
for(++b;(c2=a2+b*b)<=1e6;b++)
if(c=isN2(c2))/*如有警告,不理它*/
{ ans++;
len+=printf("%d,%d,%d ",a,b,c);
if(len>66)len=0,printf("\n");
}
}
printf("\ntotal: %d groups\n",ans);
return 0;
}
/*共计881组,最后一组696,697,985*/
用register,能把具体的实例贴出来么,我想看看到底是怎么用register变量。
呵呵,int ==auto int
你在声明a,b,c(假设你用这三个数循环)
把 int a,b,c; 改成register int a,b,c;
此举意义是把它们放到CPU的寄存器上去,使运算速度加快
我要去江边了。 得下了
越是循环次数多越没必要,因为优化时是把使用最频繁的(一个或者几个)变量定义为registe变量
循环次数少的时候,你可以指定,但数目不能超过两个,而且不能对其进行取地址操作