回 帖 发 新 帖 刷新版面

主题:求勾股数问题

勾股数是指像3,4,5这样满足x*x+y*y=z*z的数组。求小于一千的勾股数。
下面是我编写的pascal,不知道为什么不能输出。
program gougu(input,output);
Var x,y,z,i,n:real;
begin
  x:=1;
  y:=1;
while x<1000 do begin
   while y<1000 do begin
   i:=x*x+y*y;
   n:=sqrt(i);
     if z=round(n) then
      begin
      write(x,y,z);
      end;
    y:=y+1;
  end;
  x:=x+1;
 end;
readln
end.
每个x都与y有序组合,然后验证。
然后输出正确的数组。

回复列表 (共1个回复)

沙发

[font=宋体]
program gougu(input,output);
Var
  x,y,z,m,n:LongInt;
begin
  n:=0;
  x:=1;
  while x<100 do
  begin
    y:=x+1;
    while (y<100) do
    begin
      m:=x*x+y*y;
      z:=round(sqrt(m));
      if z*z=m then
      begin
        Write('(',x,',',y,',',z,') ');
        Inc(n);
      end;
      Inc(y);
    end;
    Inc(x);
  end;
  WriteLn;
  WriteLn('N=',n);
  readln
end.
[/font]

我来回复

您尚未登录,请登录后再回复。点此登录或注册