Ocaml

Résolu
imo -  
 imo -
Bonsoir,
vous pouvez m'aider j'ai besoin dans programme ocaml qui teste si le nombre est premier ou non.
merci
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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);;
    1
    1. imo
       
      merci bcp
      0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
    0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Tu as raison, fais-lui son job à sa place, comme ça il n'apprendra rien et il pourra glander chez lui.
    0
    1. imo
       
      merci c gentil de ta part
      0