|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : mars 2012 Messages : 5 ![]() |
Bonjour,
Je dois prouver mon programme big_fermat : Code :
Est ce que quelqu'un pourrait m'aider ? PS : je travaille en big_int ,sur caml light, et j'ai redefini toutes les fonctions prédéfinies sur caml light pour rendre le programme plus clair. Ex : J'ai defini racine comme sqrt_big_int. Merci d'avance ! |
||
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Valentin RobertÉtudiant Inscription : juin 2004 Messages : 70 ![]() |
Merci d'utiliser de l'indentation et une balise de code afin d'éviter d'abimer mes yeux :
Code :
__________________
Apprendre Haskell vous fera le plus grand bien ! |
||
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : mars 2012 Messages : 5 ![]() |
Désolé, mais c'était mon premier post donc je le saurais pour la prochaine fois
|
|
|
00
|
|
|
#4 | |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 513 ![]() |
Ça n'est pas un problème de langage mais plutôt un exercice d'algorithmie.
On appelle ça de la programmation par contrat et d'habitude c'est Eiffel le langage de référence pour ce genre d'exercice. C'est pourquoi je ne saurais trop te recommander la lecture de : Citation:
Il y a un chapitre consacré aux boucles et à leur vérification (pseudo-)formelle. Plus précisément:
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : avril 2007 Messages : 829 ![]() |
Je trouve un peu abusif de dire que c'est Eiffel la référence en la matière d'invariants de boucle. Des preuves de programmes par préservation d'invariant on en fait depuis longtemps, les papiers de Knuth, Dijkstra ou Hoare en sont remplis, c'est bien connu et bien maîtrisé (comme technique de preuve manuelle) depuis longtemps.
(Par contre je trouve que la question est trop mal posée et c'est pour ça que je n'y ai pas répondue. On nous demande d'aider à prouver un programme sans expliquer son fonctionnement ou même dire ce qu'il est censé faire, et le code ne donne pas envie d'être lu, sauf pour les gens qui trouvent que "r", "x" et "y" c'est le summum de la clarté comme nom de variables...) |
|
|
10
|
|
|
#6 | |
|
Membre actif
![]() Valentin RobertÉtudiant Inscription : juin 2004 Messages : 70 ![]() |
Citation:
Pour trouver un invariant de boucle, il "faut" (c'est mieux) comprendre ce que la boucle essaie de faire (et comment elle essaie de le faire). L'invariant est une formule qui est vraie au moment où on entre dans la boucle, et rétablie à chaque tour de boucle. Il faut donc que tu trouves une propriété (non triviale) qui est vraie au moment où tu entres dans la boucle, et qui est vraie après exécution du corps de la boucle en faisant l'hypothèse qu'elle est vraie au début du corps de la boucle.
__________________
Apprendre Haskell vous fera le plus grand bien ! |
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() Étudiant Inscription : mars 2012 Messages : 5 ![]() |
Désolé de ne pas avoir été plus clair !
Ce programme sert à décomposer un entier en facteur de deux nombres, pas forcément premier. Par contre si le nombre de départ n est premier, le programme rend [ 1; n ] . On peut facilement en déduire une façon de décomposer un nombre en facteur premier : Code :
Est-ce plus clair comme ça ? |
||
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : mars 2012 Messages : 5 ![]() |
Petite rectification dans le programme dec :
dans le cas ou hd aux = 1 il faut renvoyer "tl aux" et non "aux" pour ne pas voir apparaître les 1 dans la decomposition en facteurs premiers. De plus big_fermat ne marche que pour des nombres impairs. En ce qui concerne le nom de ce programme : Il s'agit d'un algorithme trouvé par Pierre de Fermat. de plus je travaille en big_int donc : => big_fermat |
|
|
00
|
|
|
#9 | |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 513 ![]() |
Citation:
Seulement si tu es un inculte et que tu veux trouver des citations (TAGS) de Dijkstra ou Hoare hé bien tu vas sur le blog de l'auteur d'Eiffel. Pareil si tu veux voir Hoare en chair et en os tu te rends à une conférence de la ETH Chair of Software Engineering à laquelle Hoare a été invité par la même personne.
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
|
00
|
|
|
#10 |
|
Membre actif
![]() Valentin RobertÉtudiant Inscription : juin 2004 Messages : 70 ![]() |
Une petite voix me dit que gasche a déjà rencontré Tony Hoare en personne cette année.
Drôle de remontage de sujet.
__________________
Apprendre Haskell vous fera le plus grand bien ! |
|
00
|
Copyright © 2000-2013 - www.developpez.com