IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Pseudo code pour la somme de nombres impairs


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut Pseudo code pour la somme de nombres impairs
    Bonsoir,

    je cherche à résoudre l'algorithme suivant :

    Ecrire un algorithme permettant de calculer la somme des entiers impairs naturels
    allant de 1 à 9999. Devront être exclus de ce calcul les chiffres finissant par 5.

    mais je sèche sur l'écriture de ce dernier. Je vois qu'il faut mettre des conditions mais je n'arrive pas à l'écrire correctement.

    Pouvez vous svp me donner les bases pour résoudre ce dernier ?

    Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut


    Tu devras avoir (pour une implémentation naïve) un accumulateur et une boucle. Cette dernière aura un compteur de 1 à 9 999. Si la condition demandée est vérifiée, alors tu ajoutes le nombre courant à l'accumulateur. En gros :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    acc = 0
    for i in range(1, 9999 + 1): 
      if entier_naturel_impair(i) and se_finit_par_5(i): 
        acc += i
    Pour cette dernière partie, j'aurais tendance à utiliser un modulo : si le reste de la division par 5 est nul, c'est que le dernier chiffre est 0 ou 5 ; par 10, s'il est nul, c'est que ce dernier chiffre est 0. Tu peux aussi remplacer cette deuxième partie par la condition d'imparité.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour,

    On peut déjà faire sauter la condition sur l'imparité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    acc = 0
    for i in range(0, 500): 
      j=2*i+1
      if not (se_finit_par_5(j)): 
        acc += j
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    si on commence à pousser un chouillat le truc, les nombres impairs qui ne finissent pas par 5 finissent tous par 1,3,7 ou 9
    partant de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    r = 0
    for i in range(0,10000,10): # tous les entiers de 0 inclus à 10000 exclus avec un pas de 10
      r += (i * 4) + 1 + 3 + 7 + 9

  5. #5
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Si on part par là :
    On peux utiliser un dérivé de Sn=1+2+...+n = n*(n+1)/2

    http://fr.wikipedia.org/wiki/1_%2B_2..._%2B_%E2%8B%AF

    Sachant que 1+9999 =10 000 et 3+9997 =10 000
    Pour n =10 000
    On a 2 000 paires dont a : 2 000*10 000 = 20 000 000
    Car 4 nombre sur 10 est un élément d'une paire. Une paire à deux éléments et on va jusqu'à 10000.

    A noter que la formule fonction pour ton nombre finissant par 0.
    sommeVoulu = (n/5)*n
    Sinon il faut utiliser le n de la dizaine du dessous et ajouter le reste.
    On est en O(1) à la place de O(n) !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    On peux utiliser un dérivé de Sn=1+2+...+n = n*(n+1)/2
    Amusant de rappeler cette formule au lieu de rappeler que la somme des impaires est un carré.
    1² = 1 = 1 (1 nombre)
    2² = 4 = 1+3 (2 nombres)
    3² = 9 = 1+3+5 (3 nombres)
    4² = 16 = 1+3+5+7 (4 nombres)
    etc...
    5000²=25 000 000=1+3+...+9999 (5000 nombres)

    Les nombres finissant par 5 sont de la forme 5*(1+2i) pour i allant de 0 à 999.
    Donc 1000 nombres !
    5*1000² = 5 000 000

    Au final, l'algorithme doit trouver 20 millions.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    @Flodelarab : Euh... non !
    La version dérivé est : (n/5)*n
    Comme je l'explique dans mon message précédent.
    Et il trouve le bon résultat !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par schranz Voir le message
    Devront être exclus de ce calcul les chiffres finissant par 5.
    Citation Envoyé par dourouc05 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    acc = 0
    for i in range(1, 9999 + 1): 
      if entier_naturel_impair(i) and se_finit_par_5(i): 
        acc += i
    Devient donc :
    Citation Envoyé par dourouc05 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    acc = 0
    for i in range(1, 9999 + 1): 
      if entier_naturel_impair(i) and !se_finit_par_5(i): 
        acc += i

    J'aime bien celui-là !
    Citation Envoyé par BufferBob Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    r = 0
    for i in range(0,10000,10): # tous les entiers de 0 inclus à 10000 exclus avec un pas de 10
      r += (i * 4) + 1 + 3 + 7 + 9
    Le même en C/Java/C++ un peu optimisé (évite une multiplication et moins d'additions) :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int i, acc = 0 ;
    for (i=0 ; i < 10000 ; i+=10)
         acc += (i<<2) + 20 ;
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    @Flodelarab : Euh... non !
    Pourquoi "non" ? C'est juste et non contradictoire.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Merci pour ces échanges , c'est intéressant de voir des approches différentes de chacun.

    J'ai oublié de préciser mais je débute dans le pseudo code du coup je comprend pas tout notamment. J'en suis resté a la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var A en entier
    debut
    si
    finsi
    fin
    Pour l'instant la méthode la plus explicite pour moi reste celle la
    r = 0
    for i in range(0,10000,10): # tous les entiers de 0 inclus à 10000 exclus avec un pas de 10
    r += (i * 4) + 1 + 3 + 7 + 9
    par contre je comprend pas trop bien la dernière ligne , le (i*4) correspond au 4 chiffres impaire présent pour un pas de 10 mais a quoi sert la multiplication dans tout ca ?

  11. #11
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    C'est le nombre de dizaines. Mais tu ne fais pas l'exercice demandé si tu prends des raccourcis.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  12. #12
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Pourquoi "non" ? C'est juste et non contradictoire.
    Ce que tu fait c'est une dérivé et non un dérivé(variante)... Tu joue sur les mots et ce n'est pas le but.

    par contre je comprend pas trop bien la dernière ligne , le (i*4) correspond au 4 chiffres impaire présent pour un pas de 10 mais a quoi sert la multiplication dans tout ca ?
    Si tu prends le cas de 11 13 17 19 :
    Devient :
    10+1+10+3+10+7+10+9
    Qu'on réarrange :
    10+10+10+10+1+3+7+9
    Qu'on factorise :
    10*4+1+3+7+9
    Qu'on généralise :
    i*4+1+3+7+9 ou i est le nombre de dizaine (où la partie supérieur à 10)
    Mais tu ne fais pas l'exercice demandé si tu prends des raccourcis.
    J'avoue ne pas comprendre la logique sous-jacente...

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Pour reprendre et continuer l'idée de Kolodz :

    La somme S des nombres de 1 à n est donnée par S = n * (n+1) / 2 = E(1,n) . Nommons là S1.

    Donc la somme des nombres pairs de 1 à n est par E(2,(n/2)). Appelons la S2.

    La somme des nombres des nombres multiples de 5 de 1 à N est E(5,(n/5)). Appelons la S5.

    Il faut penser au multiples de 10 qui sont également pairs et divisibles par 5.

    Il suffit alors de créer une fonction qui prend en paramètre un multiplicateur et une limite supérieure et d'appliquer la formule :

    S(1,N) - S(2, N) - S(5) + 2*S(10) avec N = 9999

    Mes 2 centimes.

  14. #14
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    je vois que cette algo donne lieu à débat, sans vouloir être exigeant est ce que quelqu’un peut me le l'écrire sous forme de pseudo-code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var A en entier
    debut
    si
    finsi
    fin
    Merci

  15. #15
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Je ne suis pas pour le pseudo code. Voici les deux versions qu'il me semble important de retenir coder en Java :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    package aide.forum.developpez;
     
    public class Sum {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// On va faire un test des algos jusqu'à n =10 000
    		int n = 10000;
    		for (int i = 0; i <= n; i++) {
    			int sum = sumWithForAlgo(i);
    			int result = sumAsO1Algo(i);
    			if(sum!= result){
    				System.out.println("Erreur ! Itération "+i+" : Résultat version simple "+sum + ", Résultat version rapide " + result);
    				System.exit(1);
    			}
    			System.out.println("Itération "+i+" : Résultat version simple "+sum + ", Résultat version rapide " + result);
    		}
    	}
     
    	private static int sumAsO1Algo(int n) {
    		n=n-1; //On retir un car prend le cas où n est non inclut pour être identique à l'autre algo.
    		// On veux savoir quel est l'unité final
    		int reset = n % 10;
    		// Si on est dans le cas où on est divisible par 10, pas besoin de se prendre la tête on applique la formule.
    		if (reset == 0 ) {
    			return (n / 5) * n;
    		} else {
    			// Mince ce n'est pas le cas parfait ! On fait une version étendu
    			// On va compter ce qui est après le cas parfait ! Et l'ajouter ... C'est pas si long !
    			int topPart=0;
    			// On veux l'arrondi au dizaine inférieur pour faire les belles additions !
    			int arrondi = n/10*10;
    			if(reset>=1){
    				topPart+=arrondi+1;
    			}
    			if(reset>=3){
    				topPart+=arrondi+3;
    			}
    			if(reset>=7){
    				topPart+=arrondi+7;
    			}
    			if(reset>=9){
    				topPart+=arrondi+9;
    			}
    			return (arrondi / 5) * arrondi+topPart;
    		}
    	}
     
    	private static int sumWithForAlgo(int n) {
    		int toReturn = 0;
    		for (int i = 1; i < n; i++) {
    			if (i % 10 == 1 || i % 10 == 3 || i % 10 == 7 || i % 10 == 9) {
    				toReturn += i;
    			}
    		}
    		return toReturn;
    	}
     
    }

    Résultat:
    Itération 0 : Résultat version simple 0, Résultat version rapide 0
    Itération 1 : Résultat version simple 0, Résultat version rapide 0
    Itération 2 : Résultat version simple 1, Résultat version rapide 1
    Itération 3 : Résultat version simple 1, Résultat version rapide 1
    Itération 4 : Résultat version simple 4, Résultat version rapide 4
    Itération 5 : Résultat version simple 4, Résultat version rapide 4
    Itération 6 : Résultat version simple 4, Résultat version rapide 4
    Itération 7 : Résultat version simple 4, Résultat version rapide 4
    Itération 8 : Résultat version simple 11, Résultat version rapide 11
    Itération 9 : Résultat version simple 11, Résultat version rapide 11
    Itération 10 : Résultat version simple 20, Résultat version rapide 20
    Itération 11 : Résultat version simple 20, Résultat version rapide 20
    Itération 12 : Résultat version simple 31, Résultat version rapide 31
    Itération 13 : Résultat version simple 31, Résultat version rapide 31
    Itération 14 : Résultat version simple 44, Résultat version rapide 44
    Itération 15 : Résultat version simple 44, Résultat version rapide 44
    Itération 16 : Résultat version simple 44, Résultat version rapide 44
    Itération 17 : Résultat version simple 44, Résultat version rapide 44
    Itération 18 : Résultat version simple 61, Résultat version rapide 61
    ...
    Itération 9993 : Résultat version simple 19970011, Résultat version rapide 19970011
    Itération 9994 : Résultat version simple 19980004, Résultat version rapide 19980004
    Itération 9995 : Résultat version simple 19980004, Résultat version rapide 19980004
    Itération 9996 : Résultat version simple 19980004, Résultat version rapide 19980004
    Itération 9997 : Résultat version simple 19980004, Résultat version rapide 19980004
    Itération 9998 : Résultat version simple 19990001, Résultat version rapide 19990001
    Itération 9999 : Résultat version simple 19990001, Résultat version rapide 19990001
    Itération 10000 : Résultat version simple 20000000, Résultat version rapide 20000000
    Pour information le temps d'exécution pour n de 0 à 100000:
    sumWithForAlgo : 11 375ms
    sumAsO1Algo : 6 ms
    C'est le passage de O(n) à O(1) !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  16. #16
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Avec le petit morceau de code que je propose :
    - 7ms si pas d'affichage
    - 370ms si affichage.
    Une méthode directe est toujours mieux qu'une boucle.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  17. #17
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Citation Envoyé par ToTo13 Voir le message
    Avec le petit morceau de code que je propose :
    - 7ms si pas d'affichage
    - 370ms si affichage.
    Une méthode directe est toujours mieux qu'une boucle.
    En réalisant l'ensemble des itérations de n=1 à n = 10000 ?
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  18. #18
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Citation Envoyé par kolodz Voir le message
    En réalisant l'ensemble des itérations de n=1 à n = 10000 ?
    oui.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  19. #19
    Membre confirmé
    Avatar de Deuzz
    Homme Profil pro
    curieux
    Inscrit en
    Septembre 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : curieux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 148
    Points : 521
    Points
    521
    Par défaut
    Bonsoir

    Citation Envoyé par schranz Voir le message
    je vois que cette algo donne lieu à débat, sans vouloir être exigeant est ce que quelqu’un peut me le l'écrire sous forme de pseudo-code :Merci
    Comme j'ai pitié (à toi de l'adapter à tes règles d'écriture, si je n'utilise pas les mêmes que toi) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var Total = 0
    var Nombre = 1
    DEBUT
    TANT_QUE Nombre < 10000
    SI Nombre MOD(5) <> 0
    ALORS Total = Total + Nombre
    FINSI
    Nombre = Nombre + 2
    FINTANT_QUE
    FIN
    Et si tu veux absolument incrémenter de 1 en 1 au lieu de 2 en 2, change la condition en
    SI Nombre MOD(5) <> 0 OU Nombre MOD(2) <> 0

    Au besoin : Modulo

    Au passage : Algorithme est masculin.

    Citation Envoyé par schranz Voir le message
    je vois que cette algo

  20. #20
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 134
    Points : 65
    Points
    65
    Par défaut
    Merci pour vos explicatiosn et aides,

    @Deuzz comme je découvre l'algorithme , je préfère par le pseudo que plutôt un langage connu. Mais c'est sympa de me l'avoir écrit .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Somme de nombre pour une date maximum
    Par HurGeek dans le forum SQL
    Réponses: 7
    Dernier message: 22/05/2012, 17h30
  2. VB6, code pour éffectuer la racine carré d'un nombre
    Par nap91 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/05/2011, 13h20
  3. Réponses: 1
    Dernier message: 08/04/2009, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo