Précédent   Forum du club des développeurs et IT Pro > Autres langages > Algorithmes
Algorithmes Forum d'entraide sur l'algorithmique, l'intelligence artificielle, le traitement numérique d'images et les mathématiques. Avant de poster : Cours d'algorithmique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 23/12/2012, 20h20   #1
farized
 
Inscription : janvier 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 14
Points : -5
Points : -5
Par défaut Somme de nombres

Bonjour,

SVP, Est ce qu'il y a quelqu'un qui maîtrise l'algorithme? pour m'aider à trouver une solution à cet exercice:

Écrire l'algorithme qui fait la somme des nombres suivants:

s=1+2+4+8+....+N

Merci d'avance.
farized est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 23/12/2012, 21h18   #2
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
Qia,

La réponse est dans la question.

De plus, personne n'est ici pour faire tes exercices à ta place, donc montre-nous ce que tu as déjà fait, et explique-nous ce qui te bloque.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2012, 21h29   #3
farized
 
Inscription : janvier 2009
Messages : 14
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 14
Points : -5
Points : -5
ok, merci.
vous maîtrisez algorithme?
c’était un sujet d’examen , je veux connaitre la solution ..
farized est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 24/12/2012, 11h26   #4
prgasp77
Membre Expert
 
Avatar de prgasp77
 
Homme Yankel Scialom
Ingénieur en systèmes embarqués
Inscription : juin 2004
Messages : 998
Détails du profil
Informations personnelles :
Nom : Homme Yankel Scialom
Âge : 26
Localisation : France, Eure (Haute Normandie)

Informations professionnelles :
Activité : Ingénieur en systèmes embarqués
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juin 2004
Messages : 998
Points : 1 417
Points : 1 417
Bonjour farized,
merci de tenir compte de ce qu'a dit droggo ; il s'agit là de la « philosophie » de developpez.com.

Pour t'aider,
  • lorsque l'on parle de la discipline, on parle « d'algorithmie » ; lorsque l'on parle d'un cas particulier, alors là on parle d'algorithme ;
  • faire la somme des premiers éléments d'une suite est souvent un problème proposant une solution algébrique plutôt qu'une solution algorithmique ;
  • ici, j'imagine que tu cherches à calculer ; tes cours de mathématiques du lycée devraient te venir en aide (ou google « somme des premiers éléments d'une suite géométrique »).

Si malgré tout, pour l'exercice, tu devais résoudre le problème en proposant un algorithme ... quels sont les outils dont tu disposes ? Une boucle peut-être ?
__________________
gasp in touch
-- Yankel Scialom
prgasp77 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2013, 13h53   #5
disedorgue
Membre Expert
 
Homme
Ingénieur intégration
Inscription : décembre 2012
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Finance

Informations forums :
Inscription : décembre 2012
Messages : 385
Points : 1 087
Points : 1 087
Bonjour,

Cette question me rappel une anecdote concernant Carl Friedrich Gauss qui enfant (7 ans je crois) avait résolu un problème similaire:
1+2+3+4+...+100=?
Tandis que les autres élèves faisaient les différentes sommes, Gauss écrivit le résultat presque instantanément en trouvant et utilisant la formule:
1+2+3+...+n=n(n+1)/2

Après l'anecdote, pour le problème:
1+2+4+8+...+N=(2*N)-1

semble fonctionner.

Cordialement.
disedorgue est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2013, 16h44   #6
sologne
Membre habitué
 
Avatar de sologne
 
Homme
Chargé de missions
Inscription : mai 2011
Messages : 66
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Chargé de missions
Secteur : Service public

Informations forums :
Inscription : mai 2011
Messages : 66
Points : 118
Points : 118
Bonjour,

il s'agit en effet de la somme des termes d'une suite géométrique.
Somme(q^k,k=0,k=p) = (1-q^(p+1))/(1-q)
dans ton cas :
1+2+4+8+....+N = Somme(2^k,k=0,k=p) = (1-2^(p+1))/(1-2) = 2^(p+1)-1

Donc si tu imagines une toute petite interactivité avec l'utilisateur, du style : "Entrez le N" et tu retournes la somme, la seule difficulté est de lier le N au p.

Pour cela on pose :

N=2^p <=>
ln(N) = ln(2^p) = pln(2) <=>
p = ln(N)/ln(2)

Si N est bien une puissance de 2 alors p sera un entier à coup sûr.

Ensuite tu n'as plus qu'à appliquer la formule de calcul .

Concrètement et sans contrôle de cohérence sur la saisie utilisateur :

Code :
1
2
3
4
5
Saisir N;
p = ln(N)/ln(2);
S = 2^(p+1)-1;
Afficher S;
Il s'agit seulement du cœur le l'algo, ensuite il faut affiner, déclarer les variables, leur type, placer un petit controle de cohérence sur la saisie utilisateur, etc ...

Bon courage
sologne est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2013, 20h31   #7
disedorgue
Membre Expert
 
Homme
Ingénieur intégration
Inscription : décembre 2012
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Finance

Informations forums :
Inscription : décembre 2012
Messages : 385
Points : 1 087
Points : 1 087
On peut se passer de chercher p en utilisant la formule que je donne précédemment (sauf si elle fausse ):
1+2+4+8...+N=(2*N)-1 (forme plus informatique, mathématiquement, on l'écrirait 2N-1)
Ce qui donne comme algo:
Code :
1
2
3
Saisir N;
S=(2N)-1;
Afficher S;
Cordialement.
disedorgue est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2013, 00h44   #8
pseudocode
Rédacteur/Modérateur
 
Avatar de pseudocode
 
Homme Xavier Philippeau
Architecte système
Inscription : décembre 2006
Messages : 9 815
Détails du profil
Informations personnelles :
Nom : Homme Xavier Philippeau
Âge : 40
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Architecte système
Secteur : Industrie

Informations forums :
Inscription : décembre 2006
Messages : 9 815
Points : 16 461
Points : 16 461
Citation:
Envoyé par disedorgue Voir le message
On peut se passer de chercher p en utilisant la formule que je donne précédemment (sauf si elle fausse )
Elle n'est pas fausse. Un petit passage en binaire rend la chose plus visuelle

1+2+4+8 = 15 = 16-1

  00001 (1)
+ 00010 (2)
+ 00100 (4) 
+ 01000 (8)
-------
= 01111 (15)

= 10000 (16) - 1
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
pseudocode est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 26/01/2013, 20h26   #9
disedorgue
Membre Expert
 
Homme
Ingénieur intégration
Inscription : décembre 2012
Messages : 385
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Finance

Informations forums :
Inscription : décembre 2012
Messages : 385
Points : 1 087
Points : 1 087
On peut même généraliser sur les suites du même type:
Par exemple, si on considère la suite suivante:
1+A(2^0)+A(2^1)+A(2^2)+A(2^3)...+A(2^P)=2(A(2^P))-(A-1)

En remplaçant A par 2 et A(2^P) par N, on aurait:
1+2(1)+2(2)+2(4)+2(8)...+N=1+2+4+8+16...+N=2(N)-(2-1)=(2*N)-1

En remplaçant A par 3 et A(2^P) par N, on aurait:
1+3(1)+3(2)+3(4)+3(8)...+N=1+3+6+12+24...+N=2(N)-(3-1)=(2*N)-2

Etc...
disedorgue est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h30.


 
 
 
 
Partenaires

Hébergement Web