How to check if an array contains the Pythagorean triplet numbers (a*a+b*b=c*c) in Pascal

2 Answers

0 votes
program CheckPythagoreanTriplet;

function ContainsPythagoreanTripletNumbers(arr: array of Integer): Boolean;
var
  i, j, k, len: Integer;
  squares: array of Integer;
  temp: Integer;
begin
  len := Length(arr);
  SetLength(squares, len);

  // Square all elements
  for i := 0 to len - 1 do
    squares[i] := arr[i] * arr[i];

  // Sort the squared array using simple bubble sort
  for i := 0 to len - 2 do
    for j := 0 to len - 2 - i do
      if squares[j] > squares[j + 1] then
      begin
        temp := squares[j];
        squares[j] := squares[j + 1];
        squares[j + 1] := temp;
      end;

  // Check for Pythagorean triplet
  for i := len - 1 downto 2 do
  begin
    j := 0;
    k := i - 1;

    while j < k do
    begin
      if squares[j] + squares[k] = squares[i] then
        Exit(True)
      else if squares[j] + squares[k] < squares[i] then
        Inc(j)
      else
        Dec(k);
    end;
  end;

  ContainsPythagoreanTripletNumbers := False;
end;

var
  input: array[0..4] of Integer = (4, 7, 3, 1, 5); // 3*3 + 4*4 = 5*5 // 9 + 16 = 25
begin
  if ContainsPythagoreanTripletNumbers(input) then
    WriteLn('The array contains a Pythagorean triplet.')
  else
    WriteLn('The array does not contain a Pythagorean triplet.');
end.




(*
run:
  
The array contains a Pythagorean triplet.
  
*)


 



answered Jul 25, 2025 by avibootz
0 votes
program CheckPythagoreanTriplet;

procedure SortArray(var arr: array of Integer);
var
  i, j, temp, len: Integer;
begin
  len := Length(arr);
  for i := 0 to len - 2 do
    for j := 0 to len - 2 - i do
      if arr[j] > arr[j + 1] then
      begin
        temp := arr[j];
        arr[j] := arr[j + 1];
        arr[j + 1] := temp;
      end;
end;

function ContainsPythagoreanTripletNumbers(arr: array of Integer): Boolean;
var
  i, j, k, len: Integer;
  squares: array of Integer;
begin
  len := Length(arr);
  SetLength(squares, len);

  // Square all elements
  for i := 0 to len - 1 do
    squares[i] := arr[i] * arr[i];

  // Sort using our new procedure
  SortArray(squares);

  // Check for triplet
  for i := len - 1 downto 2 do
  begin
    j := 0;
    k := i - 1;

    while j < k do
    begin
      if squares[j] + squares[k] = squares[i] then
        Exit(True)
      else if squares[j] + squares[k] < squares[i] then
        Inc(j)
      else
        Dec(k);
    end;
  end;

  ContainsPythagoreanTripletNumbers := False;
end;

var
  input: array[0..4] of Integer = (4, 7, 3, 1, 5); // 3*3 + 4*4 = 5*5 // 9 + 16 = 25
begin
  if ContainsPythagoreanTripletNumbers(input) then
    WriteLn('The array contains a Pythagorean triplet.')
  else
    WriteLn('The array does not contain a Pythagorean triplet.');
end.




(*
run:
  
The array contains a Pythagorean triplet.
  
*)


 



answered Jul 25, 2025 by avibootz
...