Ocaml
Résolu/Fermé3 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
31 oct. 2008 à 10:56
31 oct. 2008 à 10:56
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);;
mamiemando
Messages postés
33372
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 802
31 oct. 2008 à 00:47
31 oct. 2008 à 00:47
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
mamiemando
Messages postés
33372
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 novembre 2024
7 802
31 oct. 2008 à 14:08
31 oct. 2008 à 14:08
Tu as raison, fais-lui son job à sa place, comme ça il n'apprendra rien et il pourra glander chez lui.
31 oct. 2008 à 15:56