Probleme sur les nombre premier.

Bonjour,
Étant donné que si un nombre n'a pas de diviseur entre 1 et sa racine, on dit qu'il est premier.Donc j'ai voulu partir de ce principe pour créer un programme qui dit si un nombre et premier ou non, et j'ai procéder comme ceci :
program premier;
var n:integer;
    i,y:real;
begin 
   writeln('Saisissez un entier');
   readln(n);
   for i:= 2 to (sqrt(n)) do
      if (n)mod(i) =0 then 
        writeln('le nombre n''est pas premier')
      else 
        writeln('le nombre est premier');
end
  

le souci c'est que a la compilation, ça m'affiche 'control variable type is not valid'.
Merci de votre aide.

3 réponses

  1. Le même genre de message donc....
    C’est de quel type une racine?
    0
    1. Bonjour

      Tout d’abord merci d’avoir essayé d’utiliser la coloration syntaxique. Cependant le résultat pourrait être encore mieux en forçant le langage. Voici un petit tuto sur la bonne utilisation des balises de code https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

      Pour ton problème, en plus de souligner le i, ton IDE te renvoie certainement un message d’erreur.

      Et ce message doit dire un truc du genre, « c’est pas le bon type de variable ».

      Quelques soit le langage, la variable d’itération d’un for doit être un entier.
      0
      1. Petite précision, pour un for par défaut, comme c’est ton cas
        0
      2. Contributeur
        en effet, le message d'erreur obtenu est: "control variable type is not valid".
        moi, avec un autre compilateur, j'obtiens "Ordinal expression expected".
        0
      3. en effet, mettre le i en "integer" résout ce problème mais cette fois si une autre erreur dans la même ligne mais dans (sqrt(n)) et le message d'erreur est "Expression type not compatible with control variable type"
        0
    2. Contributeur
      bonjour, le compilateur ne t'indique pas à quelle ligne l'erreur se produit?
      0
      1. Salut, c'est a cette ligne:
        for i:= 2 to (sqrt(n)) do

        Et il me met le curseur juste avant le i.
        0