begin process at 2012 05 27 15:04:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > [C/C++] DÉTERMINER LES DIVISEURS D'UN NOMBRE AVEC DES INFORMATIONS SUPPLÉMENTAIRE

[C/C++] DÉTERMINER LES DIVISEURS D'UN NOMBRE AVEC DES INFORMATIONS SUPPLÉMENTAIRE


 Description

Un jour j'avais besoin de déterminer les diviseurs d'un groupe de nombres et comme je suis un grand fainéant au lieu de tout calculer manuellement j'ai décider de faire un petit prog, qui me permettez par la même occasion de reprendre un peut la programmation car sa faisait un moment enfin bref voilà le code :

Source

  • #include <stdlib.h>
  • #include <stdio.h>
  • #include <limits.h>
  • using namespace std;
  • int main(){
  • unsigned long nombre = 0;
  • while ( true ) {
  • fprintf ( stdout, "\n\nEntrer un nombre entier ( < %lu ) : ", LONG_MAX);
  • unsigned long somme = 0;
  • fflush ( stdin );
  • scanf ( "%lu", &nombre );
  • fprintf ( stdout, "Resultat :\n" );
  • for ( unsigned long i = 1; i <= nombre; i++ ) {
  • long double result = (long double)(nombre) / (long double)(i);
  • if ( result == (long double) ( (unsigned long) ( result ) ) ) {
  • if ( i == nombre || i > (long double) ( result ) )
  • break;
  • fprintf ( stdout, "%lu x %lu\n", i, (unsigned long) ( result ) );
  • if ( i == (unsigned long) ( result ) )
  • somme += i;
  • else
  • somme += i + (unsigned long) ( result );
  • }
  • }
  • if ( somme >= nombre )
  • somme -= nombre;
  • fprintf ( stdout, "\nLa somme des diviseurs sans le nombre lui meme est : %lu", somme );
  • if ( somme == nombre )
  • fprintf ( stdout, "\nC'est un nombre parfait !" );
  • if ( somme == 1 )
  • fprintf ( stdout, "\nC'est un nombre primaire !" );
  • }
  • return 0;
  • }
#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

using namespace std;

int main(){

    unsigned long nombre = 0;

    while ( true ) {

        fprintf ( stdout, "\n\nEntrer un nombre entier ( < %lu ) : ", LONG_MAX);

        unsigned long somme = 0;

        fflush ( stdin );
        scanf ( "%lu", &nombre );

        fprintf ( stdout, "Resultat :\n" );

        for ( unsigned long i = 1; i <= nombre; i++ ) {

            long double result = (long double)(nombre) / (long double)(i);

            if ( result == (long double) ( (unsigned long) ( result ) ) ) {

                if ( i == nombre || i > (long double) ( result ) )
                    break;

                fprintf ( stdout, "%lu x %lu\n", i,  (unsigned long) ( result ) );

                if ( i == (unsigned long) ( result )  )
                    somme += i;
                else
                    somme += i + (unsigned long) ( result );

            }

        }

        if ( somme >= nombre )
            somme -= nombre;

        fprintf ( stdout, "\nLa somme des diviseurs sans le nombre lui meme est : %lu", somme );

        if ( somme == nombre )
            fprintf ( stdout, "\nC'est un nombre parfait !" );
        if ( somme == 1 )
            fprintf ( stdout, "\nC'est un nombre primaire !" );

    }

    return 0;

}



 Sources du même auteur

Source avec Zip VIRTOPROFESSOR: MRCARDO, UN APPRENTISSAGE RAPIDE DE VOS LEÇO...

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture TROUVER LES NOMBRES PREMIERS INFÉRIEURS À UNE LIMITE DONNÉE par angrevol
RESOLUTION D'UNE EQUATION DU SECOND DEGRÉ AVEC RACINES REEL... par maloum41
Source avec Zip TRANSFORMER UN ENTIER EN DEUX NOMBRES COMPOSÉ DES MEMES CHIF... par thebroyeur
CALCULER LE PRODUIT DE DEUX MATRICES DE TAILLE DIFFERENT par aymenet1
Source avec Zip Source avec une capture MANIPULATION DE NOMBRE COMPLEXE par bazdig25

Commentaires et avis

Commentaire de circular le 02/11/2009 14:40:55

On peut aller plus vite dans la recherche en allant seulement jusqu'à la racine carrée du nombre. Après, on retrouve les résultats précédents. Par exemple avec le nombre 60 :

8x8 > 60, donc on a besoin d'aller que de 1 à 7.

Par exemple, si on va jusqu'à 10, on trouve 10x6 = 60, mais on a déjà trouvé cette décomposition à partir de 6, puisque 6x10 = 60.

Commentaire de soso62fr le 02/11/2009 15:02:57

Merci circular mais je crois que c'est deja fait, regarde la ligne 28 ;)

Commentaire de Bacterius le 04/11/2009 12:23:47

Tu peux aussi implémenter le crible quadratique ou le crible spécial de corps de nombres. Tu pourras trouver les diviseurs d'un nombre de 100 chiffres en 30 minutes sur un bon PC. Mais pour l'implémenter, bonjour ... :p

Cordialement, Bacterius !

Commentaire de soso62fr le 04/11/2009 12:31:25

Je ne pense pas que cela soit nécessaire car ce code est conçu dans le but de calculer les diviseurs d'un nombre composé de 3-4 chiffres maximum et pas des centaines ...

Commentaire de Bacterius le 04/11/2009 12:38:10

Evidemment, si c'est juste pour des nombres de l'ordre d'un millier, c'est inutile.
Mais si un jour tu as besoin de factoriser des grands nombres (factoriser = trouver les facteurs/diviseurs), utilise plutôt ceux dont je t'ai parlé (à moins que t'ai 2 milliards d'années devant toi).

Cordialement, Bacterius !

Commentaire de soso62fr le 04/11/2009 12:47:47

Oui bien sûr, je manquerez pas d'implémenter le "crible quadratique" si je devez un jour calculer les diviseurs d'un nombre (très) important ! =)

Merci Bacterius.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Trouver les diviseur d'un nombre [ par Olivier ] Salut,je viens de découvrir ce site et je le trouve vraiment complet !! ça fait longtemps que je cherche ce genre de site proposant des sources de pro programmation C : qui veut bien me donner un coup de pouce [ par dido1441 ] salut à tous ...j'aimerais bien qu'on maide à corriger set exercice. Voici mon code source [b] #include #include int main() { int i, nbre ; division nombre [ par senateur17 ] Bonjour tout le monde, J'utilise DevC++,voici mon programme en C # include int main(){ long c; c=10.0/5.0; printf("division\n",c); system("PAUSE"); r Division d'un tableau [ par AngeloVivaldi ] Bjr a tousj'ai un probleme en C/C++J'ai un tableau de x short, cette suite de chiffre forme un nombre. Ya un short par cellule pour former ce nombre. Lecture de fichier [ par giuseppe2 ] Bonjour,Je commence tout juste en C++ et je me galère commen un fou pour des histoires de lecture de données à partir d'un fichier.J'ouvre un fichier Printf bizarre [ par x0s ] Bonjour Amis codeurs,J'ai un probleme avec cette petite fonction, je débute en c, merci de m'aider, voici le problème:#include &lt;stdio.h&gt; /* Aut Crypter un nombre ds un fichier [ par ryukengouki ] Est ce que qqun pourrait me dire comment, de façon "SIMPLE", crypter mais aussi décrypter un nombre que j'enregistre dans un fichier...le but de cette Gestion d'appartements [ par ScorpionTiti ] Salut à tous!Merci pour toutes vos suggestions. Vous m'avez bien aidé.Cependant, je vais être encore chiant. Je dois établir une gestion de dix appar convertir un int en char ??? [ par tintin72 ] Salut,Comment convertir un int en char pour que la valeur numérique du int devienne un nombre écrit ? par ex: pour que : int nombre = 18; donne une fo affichage telechargement [ par gabuzomeuh ] le site indique le nombre de fois qu'une source a été vue mais ce serait bien aussi qu'on puisse savoir pour chaque source le nombre de fois qu'il a é


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales