谁能在我的Pascal代码中发现逻辑错误

问题描述 投票:0回答:1

问题是为任何给定的输入N打印一系列连续的3个素数(对于N = 3,输出必须为:3 5 7)该代码没有语法错误,但是逻辑上有缺陷,因为IDE将不会处理我的代码。

    program prime;
    uses crt;
    var
    n : longint;
    i : longint;
    counter : longint;
    nPrime : boolean;

    begin
     write('Input a prime number N : ')
     readln(n);
     write(n);
    nPrime := true;
    counter := 0;

    repeat
     begin
      for i := 2 to (n) do
       begin
        if (n+1) mod i = 0 then
          begin
            nPrime := false;
            break;
          end;
       end;

      if nPrime = true then
        begin
           writeln(n+1);
           counter := counter + 1
        end;
      n := n + 1;

     end;
     until counter = 2;


     readln;
    end.

IDE实际上处理程序的前13行,因为它给出素数N作为输出。但是,在打印N之后,程序将停止。无论如何都没有错误消息,该程序将继续运行而不给出任何输出。

algorithm pascal
1个回答
1
投票

我认为您的代码检查素数有问题。您应参考this code进行检查

© www.soinside.com 2019 - 2024. All rights reserved.