Aidez moi a trouvé l'algorithme

hamada143 Messages postés 6 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 10 octobre 2006 - 10 oct. 2006 à 02:03
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 10 oct. 2006 à 11:16
salut je suis un simple debutant en algorithme et j'ai besoin de votre aide svp

on ma demander d'ecrire deux algorithme :

1-un algo qui affiche si x est parfait
un nombre parfait par ex: 1+2+3=6   et  1*2*3=6
il n'est pas necessaire que les nombres se suivent.

2-un algo qui affiche le jour qui correspond à une date (saisie par l'utilisateur sous forme de j,m,a) on prend en consideration si l'année est bissextile ou non

desole pour cette question , svp aidez moi a trouvé l'algorithme

4 réponses

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
10 oct. 2006 à 04:20
Bonjour,


1° rechercher les diviseurs d' un nombre N
    N:=<Entree utilisateur>
    tester si N=0
    Quitter
    sinon


 'variables
   i variable compteur
   Somme variable somme
   Produit variable produit
  
   Somme:=0
   Produit:=1
   i:=1
 
  Tq i<N
      Si (N Mod i)=0 Alors
          Somme:=Somme + i
          Produit:=Produit * i
      Fin si 
      I:=I+1
   fin Tq


  tester si le nombre est parfait
  Si Somme=Produit Alors afficher "N est un nombre parfait"


2° Le numéro du jour
    Fonction NumJour(xDate)
    NumJour:=1


    'variable cJour,cMois,cAnnee
    cJour:=partie jour de la date
    cMois:=partie mois de la date
    cJAnnee:=partie année de la date
  
    tu teste sur la valeur du mois
    si le mois=1 alors
        NumJour=cjour
    sinon si cjour=2 alors
       NumJour=31+cjour
    sinon si cjour=3 alors
       NumJour=59+cjour (59=31+28 pours Fevrier)
   sinon si cjour=4 alors
       NumJour=81+cjour  (81=59+30)


   Ainsi de suite et à chaque test, tu ajoutes
   30 ou 31 selon le nombre de jour du mois précédent


 
¨¨   'tu testes ensuite sur l' année bissextile
   si (cAnne Mod 4 = 0) et (cMois > 2) Alors
       NumJour=NumJour+1 (tu ajoutes un jour pour fevrier
       mais ceci uniquement à partir de Mars


'
 Fin Fonction 
 
Voilà tout,
  j' espère que ton professeur ne m' en voudra pas !


Bon courage


PS: Probablement que tu dors en ce moment même...
sauf si tu es réveillé pour le s' hor .


 


 


 


 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
10 oct. 2006 à 04:24
Rectifies :
sinon si cMois=2 alors
       NumJour=31+cjour
    sinon si cMois=3 alors
       NumJour=59+cjour (59=31+28 pours Fevrier)
   sinon si cMois=4 alors
       NumJour=81+cjour  (81=59+30)
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
10 oct. 2006 à 06:01
vu que c' est le Ramadan
et que je suis de bonne humeur,
voici une version plus performente
du nombre parfait :


Elle se base sur le fait que
si un nombre est divisible par un autre
il est aussi divisible par le résultat de cette division.


(si N est divisible par 2
il est aussi divisible par N/2
si N divisible par 3
il est aussi divisible par N/3)


et ceci jusqu' à la RacineCarrée de ce nombre
car N/RacineCarrée = RacineCarrée


Voici ton algoritme :
 
Tq i < RacineCarrée(N)
      si ( N Mod i ) = 0 alors
           Somme := Somme + i + (N/i)
           Produit := Produit * i * (N/i)
       fin si
     i=i+1
  fin Tq
  
il ne faut ajouter la RacineCarrée qu' une seule fois
d' ou


si (N Mod RacineCarrée(N))=0 alors
   Somme := Somme + RacineCarrée(N)
   Produit := Produit * RacineCarrée(N)
fin si


Avec ça tu épateras tout le monde !


 
 
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 oct. 2006 à 11:16
on n'est pas là pour répondre a tes contrôles d'algo !

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Rejoignez-nous