Programme pascal pour nombre premier ou pas

Bonjour, voici un programme pascal ou je dois vérifier si un nombre est oremier ou pas mais je comprends pas où est mon erreur?
svp aidez moi.

Program nbr_premier;
uses WinCrt;
Var N,i,r: Integer;
Begin
WriteLn ('Entrez un nolbre ');
Readln(N);
r:=0;
for i:=2 to N do;
Begin
 r:= N Mod i;
 If r=0 Then
  Begin
 writeln (N, ' N:Est pas un nombre parfait');
 else WriteLn (N, ' Est un nombre parfait');
 End
End
End.


Configuration: Windows / Chrome 96.0.4664.45


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

  1. Contributeur
    bonjour,
    je suggère que tu affiches la valeur de i à chaque tour de boucle.
    1. Modérateur
      Quand tu pose une question avec un exemple de code essayes toujours de préciser le problème clairement.
      Dans ton cas :
      - Si je rentre XXX
      - Je voudrais obtenir YYYYY
      - Mais j’obtiens ZZZZZ à la place
      1. Program nbr_premier;
        uses WinCrt;
        Var N,i,r: Integer;
        Begin
           WriteLn ('Entrez un nombre ');
           Readln(N);
           r:=0;
           for i:=2 to N do
           Begin
              r:= N Mod i;
              If r=0 Then
                  writeln (N, ' Est pas un nombre parfait')
              else 
                  WriteLn (N, ' Est un nombre parfait');
           End;
        End.