Fractions egyptiennes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 669 fois - Téléchargée 18 fois

Contenu du snippet

Programme qui saisit le numérateur et le dénominateur (entiers) d'un nombre fractionnaire et fournit en sortie sa décomposition sous forme égyptienne.

Source / Exemple :


#include <stdio.h>
#include <stdlib.h>

int ppcm( int X,int Y){
     int inf,sup,ksup;
     if (X<Y){
        inf=X;
        sup=Y;
        } else {
        inf=Y;
        sup=X;
        }
     ksup=sup;
     while (ksup%inf!=0){
        ksup=ksup+sup;
      }
      return (ksup);
} 

int main (){
    int tab[100],i=0,j=2,cpt,P,Nn,Nd,Mn,Md;
    printf("Numerateur ");
    scanf("%d",&Nn);
    printf("Denominateur ");
    scanf("%d",&Nd);
    Mn=Nn;
    Md=Nd;
    while (Mn!=0){
          P=ppcm(Md,j);
          if (Mn*P/Md-(P/j)>=0){
             tab[i]=j;
             Mn=Mn*P/Md-(P/j);
             Md=P;
             i=i+1;
             j=j+1;
             } else {
             j=j+1;
             }
    }
    tab[i]=P;
    cpt=i;
    i=0;
    printf("\n %d/%d se decompose en fractions egyptiennes de la maniere suivante\n %d/%d = 1/%d ",Nn,Nd,Nn,Nd,tab[i]);
    i=i+1;
    while (i<cpt){
          printf("+ 1/%d ",tab[i]);
          i=i+1;
          }
    system("pause");
    return(0);
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
11 octobre 2010

Ah mince, je vais essayer de trouver l'erreur et je corigerai.
Merci de me l'avoir signaler
Messages postés
326
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
5 janvier 2021
2
Sauf erreur de ma part, la conversion de 17/19 est donc erronée avec cette version du logiciel présenté, même si pour d'autres exemples la conversion est exacte. Désolé, pgl10
Messages postés
326
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
5 janvier 2021
2
Je veux dire :
17/19 = 1/2 + 1/3 + 1/17 + 1/388 + 1/375972
Merci. pgl10
Messages postés
326
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
5 janvier 2021
2
La conversion d'une fraction ordinaire en fraction égyptienne n'est pas unique.
Il y a de nombreuses et même une infinité de façons de faire cette transcription.

Mais ici, après un temps de calcul important, on trouve :

17/19 = 1/2 + 1/3 + 1/17 + 1/388 + 1/5713 + 1/5714 + 1/5716 + 1/5717 + 1/5718 +
1/5719 + 1/5720 + 1/5722 + 1/5725 + 1/5726 + 1/5730 + 1/5735 + 1/5737 +
1/5740 + 1/5745 + 1/5746 + 1/5749 + 1/5750 + 1/5752 + 1/5753 + 1/5755 +
1/5756 + 1/5759 + 1/5760

17 1 1 1 1 1
Cependant : -- = - + - + -- + --- + ------
19 2 3 17 388 375972

Alors, pourquoi pas ? Mais, une formulation plus commode serait la bienvenue.
Messages postés
35
Date d'inscription
mardi 7 novembre 2006
Statut
Membre
Dernière intervention
18 septembre 2009

Sympa, voilà qui m'a rafraîchi un peu la bosse des maths !
Code aisé à adapter. Je l'ai testé, en fait, en PHP.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.