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

Langage Java Discussion :

projet nombres premiers


Sujet :

Langage Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 83
    Par défaut projet nombres premiers
    bonjour !

    j' ai dans un projet, 7 fonctions à créer. J' en ai créé 4. La 5ème me crée un sérieux problème.

    Code : 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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
     
    //MINI PROJET NOMBRES PREMIERS
     
    public class ProjetNombresEntiers
    {
     
    		public static void main (String [] args )
    		{
    			afficheNpremiers(12);
    		}
    		//un nombre entier p divise un nombre entier q si le reste de la division entiere de p par q est zero.
     
     
     
    		//a)écrire  une fonction booléene qui, etant donnés deux entier strictement positif p et q, test si p divise q.
    		public static boolean divise (int p, int q) // la fonction est booléenne, d' où le type boolean de la fonction que j' ai appelé divise
    		{
    			boolean verite = false; // création de la variable booléenne (verite) qui sera retournée puis son initialisation à false
     
    			if(p%q == 0) // si p modulo q (reste de la division de p par q) est égale à zéro
    			{
    				verite = true; // alors la variable booléenn est vrai. Car dans ce cas, p divise q
    			}
     
    			else // sinon,
    			{
    				verite = false; // c' est faux, d' où false
    			}
     
    			return verite; // retouner la variable booléenne
    		}
     
    		// b) Ecrire une fonction qui, etant donné un entier p, rend le nombre de diviseur de p. exemple:12 a 6 diviseur:1,2,3,4,6,12
    		public static int nombreDiviseurs(int p)
    		{
    			int nbreDiv = 2; //Parce qu' un nombre entier a forcément au moins 2 diviseurs. Sauf le nombre 1. D' où la ligne suivante.
     
    			if (p == 1) // Donc, dans le cas où p = 1
    			{
    				nbreDiv = 1; // nombre de diviseurs = 1. Evidement !
    			}
     
    			else // Autrement (si p différent de 1)
    			{
    				// on parcours tous les nombres de 2 à un nombre inférieur à p (parce que 1 et p sont déjà comptés ((voir première ligne int nbreDiv = 2;)
    				for (int i = 2; i < p; i++) 
    				{
    					if(p % i == 0) // si un de ces nombres est un diviseur de p
    					nbreDiv++; // alors, augmenter de 1 le nombre de ces diviseurs
    				}
    			}
     
    			return nbreDiv; //  retourner (ou rendre) le nombre de diviseurs trouvés.
    		}
     
    		// c)  Un nombre est premier s'il n'est divisible que par 1 et par lui meme. exemple:13 est premier ,21 ne l'est pas. 	
    		// Ecrire  une fonction isPremier en utilisant la fonction de b.
    		public static boolean isPremier(int p)
    		{
    			boolean verite = false; // création de la dariable booleenne
     
    			// La fonction b) donne le nombre de diviseurs d' un entier p
    			if(nombreDiviseurs(p) == 2) // Si cenombre est inférieur ou égal à 2
    			{
    				verite = true; // alors, ce nombre est premier
    			}
    			else // autrement,
    			{
    				verite = false; // ne nombre n' est pas premier
    			}
     
    			return verite; // retourner la booléenne, évidement
    		}
     
    		// d. En fait, si l'on trouve un diviseur pour un nombre p qui est différent de 1 et de p, on peut en déduire immédiatement que p n'est pas premier.
    		// Ecrire une fonction isPremier utilisant cette propriété.
    		public static boolean isPremier2(int p)
    		{
    			boolean verite = false; // création de la dariable booleenne
     
    			if(p == 1)
    			{
    				verite = false; //Car 1 n' est pas un nombre premier
    			}
    			else // autrement
    			{
    				for(int i = 2; i < p; i++) // de tous les nombres compris entre 2 et un nombre inférieur à p
    				{
    					if(p % i == 0) // si p divise un de ces nombres
    					{
    						verite = false; // alors p n' est pas premier car p est premier seulement s' il divise 1 et lui même
    						break; // sortir de la boucle car on a déjà trouvé un diviseur différend de 1 et de p 
    					}
    					else
    					verite = true;
    				}
    			}
    				return verite; // retourner la booléenne, évidement
    		}
     
    		//e.  Améliorer en ne considérant comme diviseurs que le nombre 2 et les nombres impairs (en effet si un nombre n'est pas divisible par 2, il ne sera divisible     
    		// par aucun nombre pairs !)
     
    		public static boolean isPremier3(int p)
    		{
    			boolean verite = false; // création de la dariable booleenne
     
    			if(p == 1)
    			verite = false;
     
    			if(p == 2)
    			verite = true;
     
    			int reste = (p % 2); // la variable reste = reste de la division de p par 2
     
    			switch(reste)
    			{
    				case 0: // au cas où ce reste = 0, p est  divisible par 2 
    				verite = false; // p ne peut donc plus être premier
    				break;
     
    				default:// dans l' autre cas (forcément reste = 1) p n' est pas divisible par 2
    				for(int i = 2; i < p;  i++)
    				{
    					if(i % 2 == 0) // si i est un multiple de 2
    					continue; // ne pas en tenir compte. Donc continuer à la valeur suivante. Car p n' est pas divisible par tous les multiples de 2
     
    					if(p % i != 0) // 
    					verite = true;
    					else
    					verite = false;
    				}
    				break;
    			}	
     
    			return verite;
     
     
     
    		}
     
     
     
     
     
     
     
     
     
     
    }
    /*
    MINI PROJET NOMBRES PREMIERS
     
       Un nombre entier p divise un nombre entier q si le reste de la division entière de p par q est zéro.
     
       a. Ecrire une fonction boolenne qui, étant donnés deux entiers strictement positifs p et q, teste si p divise q.
     
       b. Ecrire une fonction qui, étant donné un entier p, rend le nombre de diviseurs de p.
       exemple : 12 à  6 diviseurs : 1,2,3,4,6,12
     
       c.Un nombre est premier s'il n'est divisible que par 1 et par lui-même.
       exemple : 13 est premier , 21 ne l'est pas.
     
       Ecrire la fonction isPremier en utilisant la fonction de b.
     
       d. En fait, si l'on trouve un diviseur pour un nombre p qui est différent de 1 et de p, on peut en déduire immédiatement que p n'est pas premier.
       Ecrire une fonction isPremier utilisant cette propriété.
     
       e.  Améliorer en ne considérant comme diviseurs que le nombre 2 et les nombres impairs (en effet si un nombre n'est pas divisible par 2, il ne sera divisible     
       par aucun nombre pairs !)
     
       f.  Améliorer en arretant les tests lorsque le diviseur dépasse la racine carrée de n. (en effet, si un diviseur de p est supérieur à la racine carrée de n, le quotient est donc inférieur à n et aura été trouvé avant).
     
       g. Ecrire une fonction affichant la liste des n premiers nombres premiers inférieurs à partir de 2..
     
    */
    si vous pouviez m' aider sur cette 5ème fonction au moins. (e)...

    merci d' avance
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 24
    Dernier message: 27/09/2005, 21h16
  2. [défi n°8]: premiers nombres premiers
    Par javatwister dans le forum Général JavaScript
    Réponses: 41
    Dernier message: 14/06/2005, 10h22
  3. [LG]Calcul des 15 premiers nombres premiers
    Par yffick dans le forum Langage
    Réponses: 12
    Dernier message: 18/09/2004, 14h57
  4. Cripter avec des nombres premiers
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/04/2004, 19h10
  5. premier nombre premier superieur à m=10^100+1
    Par azman0101 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 17/04/2003, 03h23

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