[Renommé] Nombres premiers
blackdiamont
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
svp j'aimerais avoir votre aide sur ce code. je suis en premiere annee informatique medicale et jai ecrit ce programme mai ca ne compile pas. aidez moi svp
on me demande d'écrire un programme permettant d'afficher les nombres premiers allant de 2 à 100 et d'afficher le temps ke fait pour afficher ces nombres.
voici mon code que jai essayer d'écrire:
EDIT: Ajout de la coloration syntaxique.
svp j'aimerais avoir votre aide sur ce code. je suis en premiere annee informatique medicale et jai ecrit ce programme mai ca ne compile pas. aidez moi svp
on me demande d'écrire un programme permettant d'afficher les nombres premiers allant de 2 à 100 et d'afficher le temps ke fait pour afficher ces nombres.
voici mon code que jai essayer d'écrire:
long long nbrePremiers(long long max); long long test(long long t); int _tmain(int argc, _TCHAR* argv[]) { long long nbre; double t1, t2; long long max = 440000000; t1 = clock(); nbre= nbrePremier(max); t2 = clock(); printf("nbrePremier maximal %i ", nbre); printf("\ntemps: %8.3f sec \n", (double)(t2 - t1) / CLOCKS_PER_SEC); return 0; } long long primzahl( long long max) { long long i; for (i = max; i > 1; i--) { if (test(i) == 1) return i; } return 2; } long long test( long long t) { long long j; for (j = 2; j*j<=t; j++) { if (t%j == 0) return 0; } return 1; }
EDIT: Ajout de la coloration syntaxique.
A voir également:
- [Renommé] Nombres premiers
- Code binaire des nombres - Guide
- Nombres faciles - Télécharger - Outils professionnels
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum Excel
- Citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum LibreOffice / OpenOffice
- Trouver un numéro avec les 6 premiers chiffres - Forum Freebox
2 réponses
Bonjour,
int _tmain(int argc, _TCHAR* argv[])
Le prototype standard est : int main(void) ou int main(int argc, char *argv[]).
Attention le type long long ne marche qu'en C99. Vérifie bien que c'est le cas de ton compilateur. Sinon, il faudra mettre des long en lieu et place. Si tout est ok, tu peux même utiliser unsigned long long pour augmenter le nombre maximum.
printf("nbrePremier maximal %i ", nbre);
Remarque générale : %i n'est pas correct pour les long long. Il faut plutôt utiliser %lld (L minuscule). Vérifie pour les autres printf().
long long max = 440000000;
Remarque générale également, pour les assignations il faut apposer LL. Par exemple : 440000000LL (important pour les nombres supérieurs à INT_MAX.
Attention à ta fonction test() qui ne fonctionne pas pour le cas 2. 2 est un nombre premier. Pourtant ta fonction considèrera qu'il est non premier... Utilise un if.
Note : Fonctionnellement, ça changera rien car ta fonction primzahl() retourne 2 quand même. Il n'empêche qu'algorithmiquement, test() est fausse et ne pourra pas être ré-utilisée...
Corrige tout ça et dis-nous si cela règle ton problème. Si non, reposte ton programme avec les corrections et dis-nous précisément ce qui ne fonctionne pas.
Sinon c'est normal que ton programme ne retourne qu'un nombre puisque tu lui demandes d'afficher le nombre premier le plus grand. Si tu veux afficher tous les nombres premiers, il te suffit de mettre un printf() dans primzahl() en plus du return i;
Cdlt,
Google is your friend
int _tmain(int argc, _TCHAR* argv[])
Le prototype standard est : int main(void) ou int main(int argc, char *argv[]).
Attention le type long long ne marche qu'en C99. Vérifie bien que c'est le cas de ton compilateur. Sinon, il faudra mettre des long en lieu et place. Si tout est ok, tu peux même utiliser unsigned long long pour augmenter le nombre maximum.
printf("nbrePremier maximal %i ", nbre);
Remarque générale : %i n'est pas correct pour les long long. Il faut plutôt utiliser %lld (L minuscule). Vérifie pour les autres printf().
long long max = 440000000;
Remarque générale également, pour les assignations il faut apposer LL. Par exemple : 440000000LL (important pour les nombres supérieurs à INT_MAX.
Attention à ta fonction test() qui ne fonctionne pas pour le cas 2. 2 est un nombre premier. Pourtant ta fonction considèrera qu'il est non premier... Utilise un if.
Note : Fonctionnellement, ça changera rien car ta fonction primzahl() retourne 2 quand même. Il n'empêche qu'algorithmiquement, test() est fausse et ne pourra pas être ré-utilisée...
Corrige tout ça et dis-nous si cela règle ton problème. Si non, reposte ton programme avec les corrections et dis-nous précisément ce qui ne fonctionne pas.
Sinon c'est normal que ton programme ne retourne qu'un nombre puisque tu lui demandes d'afficher le nombre premier le plus grand. Si tu veux afficher tous les nombres premiers, il te suffit de mettre un printf() dans primzahl() en plus du return i;
Cdlt,
Google is your friend
long long nbrepremier( long long max)
maintenan kan je compile ca me donne le dernier nbre premier et non ce ke tous les nbres que je demande
(Mettre des commentaires en français, ça devrait aller)