Ocaml
Résolu
imo
-
imo -
imo -
Bonsoir,
vous pouvez m'aider j'ai besoin dans programme ocaml qui teste si le nombre est premier ou non.
merci
vous pouvez m'aider j'ai besoin dans programme ocaml qui teste si le nombre est premier ou non.
merci
3 réponses
En Caml Light :
let sqrt_impair n= let i=int_of_float (sqrt (float_of_int n)) in if (i mod 2)=0 then (i+1) else i;; let rec Est_Divise a r n = if a>r then false else if (n mod a)=0 then true else Est_Divise (a+2) r n;; let Est_Premier n = if n=2 then true else if (n mod 2)=0 then false else not (Est_Divise 3 (sqrt_impair n) n);;
imo
merci bcp
Sur ce forum a priori on ne fera pas l'exercice à ta place afin que tu progresses
Plusieurs algorithmes sont donnés ici si tu as besoin d'inspiration.
https://fr.wikipedia.org/wiki/Nombre_premier#Algorithme__par_essais_de_divisions
En caml je te rappelle, on programme plutôt en récursif après avoir identifié les cas d'arrêts (ici le nombre 1 ou quand on a trouvé un diviseur). L'idée consiste à essayer de diviser N par chaque entier compris entre k = racine(N) et k = 1, et à interrompre la récursion si on en trouve un (N % k est nul, le résultat est "le nombre n'est pas premier"), soit si k est égal à 1 (N n'est divisible que par lui ou par 1), soit la valeur que la fonction récursive trouve avec k - 1.
Il ne reste plus qu'à transposer tout ça en caml.
Bonne chance
Plusieurs algorithmes sont donnés ici si tu as besoin d'inspiration.
https://fr.wikipedia.org/wiki/Nombre_premier#Algorithme__par_essais_de_divisions
En caml je te rappelle, on programme plutôt en récursif après avoir identifié les cas d'arrêts (ici le nombre 1 ou quand on a trouvé un diviseur). L'idée consiste à essayer de diviser N par chaque entier compris entre k = racine(N) et k = 1, et à interrompre la récursion si on en trouve un (N % k est nul, le résultat est "le nombre n'est pas premier"), soit si k est égal à 1 (N n'est divisible que par lui ou par 1), soit la valeur que la fonction récursive trouve avec k - 1.
Il ne reste plus qu'à transposer tout ça en caml.
Bonne chance