How to find the first 4-digit prime number where all digits are unique in Pascal

1 Answer

0 votes
program UniquePrimeFinder;

function IsPrime(n: Integer): Boolean;
var
  i, limit: Integer;
begin
  if n < 2 then
    IsPrime := False
  else if n mod 2 = 0 then
    IsPrime := (n = 2)
  else
  begin
    limit := Trunc(Sqrt(n));
    IsPrime := True;
    i := 3;
    while (i <= limit) and IsPrime do
    begin
      if n mod i = 0 then
        IsPrime := False;
      i := i + 2;
    end;
  end;
end;

function HasUniqueDigits(n: Integer): Boolean;
var
  seen: array[0..9] of Boolean;
  d: Integer;
begin
  for d := 0 to 9 do
    seen[d] := False;

  HasUniqueDigits := True;
  while (n > 0) and HasUniqueDigits do
  begin
    d := n mod 10;
    if seen[d] then
      HasUniqueDigits := False
    else
      seen[d] := True;
    n := n div 10;
  end;
end;

var
  num: Integer;
begin
  for num := 1000 to 9999 do
  begin
    if IsPrime(num) and HasUniqueDigits(num) then
    begin
      writeln('First 4-digit prime with all unique digits: ', num);
      halt;  { stop after finding the first one }
    end;
  end;

  writeln('No such number found.');
end.



(*
run:

First 4-digit prime with all unique digits: 1039

*)

 



answered 19 hours ago by avibootz
...