Ваша переменная prime
установлена в true перед входом в цикл.Внутри цикла, когда count равен 1, первичная переменная не устанавливается снова, поэтому она будет печатать true.
Другими словами:
1 mod 2 equals 1
1 mod 3 equals 1
1 mod 5 equals 1
1 mod 7 equals 1
Поскольку ни одно из этих утверждений не равно нулю,основная переменная не изменяется от своего первоначального истинного значения.
Если вы хотите проверить, является ли число простым числом, используя список простых чисел, вы должны выполнить итерацию из списка простых чисел.
Вот простой тест, который выполняетэто.
procedure TestIsPrime( number : Integer);
const
// A loopup table with primes. Expand to cover a larger range.
primes : array[1..4] of Integer = (2,3,5,7);
var
count : Integer;
highTest : Integer;
IsPrime : Boolean;
begin
if (number <= 0) then begin
WriteLn('Illegal number: ',number);
Exit;
end;
IsPrime := number > 1; // 1 is a special case !!
if (number >= Sqr(primes[High(primes)])) then begin
WriteLn('Needs more primes in table to test: ',number);
Exit;
end;
highTest := Trunc(Sqrt(number)); // Highest number to test
for count := 1 to High(primes) do begin
if (highTest >= primes[count]) then begin
if (number MOD primes[count] = 0) then begin
IsPrime := false;
Break;
end;
end
else
Break;
end;
if IsPrime = true then WriteLn(number);
end;