少一个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变量。