begin process at 2012 02 10 18:51:14
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths et Algorithmes

 > CALCUL DE NOMBRES PREMIERS

CALCUL DE NOMBRES PREMIERS


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths et Algorithmes Classé sous :nombres, premiers, calcul, calculer, mathématique Niveau :Débutant Date de création :11/12/2002 Date de mise à jour :11/12/2002 19:11:44 Vu :12 360

Auteur : niiizzzz

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Bah voila c'est mon premier prog. en java ,c'est une adaptation d'un code basic qui utilisait des label, des goto,...donc j'ai remplacé en trichant un peu sur la boucle while...Le principe c'est de tester pour chaque nombre ( en fait tous les 2 car a part le 2et le 3, il n'existe pas 2 nbres premiers consecutifs) en verifiant si il est divisible par un nombre premier au prealablement trouvé inferieur a sa racine carrée ( c'est une prop. math. ) Si il n'est pas divisible, c'est un nombre premier.Attention!!Il ne donne pas le 2.Il créé un fichier nombre.txt et y mets les nombres trouvés ( a ne pas ouvrir avec notepad, ca marche pas je sais pas pkoi )
a titre d'exemple, j'ai calculé 1 000 000 de nombres premiers en 10 min, ca ma fait un fichier txt de 8 Mo!!!

Source

  • import java.io.*;
  • class Nbprem {
  • public static void main(String[] argv) throws IOException {
  • int Depart;
  • Depart = demander("Combien de nombres?");
  • // On ouvre le fichier nombre.txt en ecriture
  • Ecriture Sortie= new Ecriture();
  • // On cree un tableau
  • int[] Tab = new int [Depart];
  • // Quelques variables...
  • int Z = 1;
  • int N = 3;
  • int X =0;
  • Tab[1]=2;
  • // On rentre dans une boucle infinie mais avec remise a zero de X
  • while ( X < (Z+1) ) {
  • if ( X > Depart ) { System.exit(0); };
  • X =X + 1;
  • // On prepare la difference
  • int Entier = N / Tab[X];
  • double Num = (double)N;
  • double Denom = (double)Tab[X];
  • double Decimal = Num / Denom;
  • // Si N est divisible par l'un des nombres premiers deja trouvé...
  • if (Decimal - Entier == 0) {
  • // ...on l'incremente de 2...
  • N = N + 2;
  • // ...et on repart pour un tour!
  • X = 0;
  • }
  • // Si l'eventuel diviseur de N testé depasse sa racine caree alors N est premier
  • else if ( Tab[X] > Math.sqrt( N ) ) {
  • Z = Z +1;
  • if ( Z > Depart ) { System.exit(0); };
  • // On le mets dans notre tableau...
  • Tab[Z] = N;
  • //...et on le stocke dans nombre.txt;
  • String Premier = String.valueOf(N);
  • Sortie.ecrire(Premier + "|" );
  • // et on repart pour un tour!!
  • N = N + 2;
  • X = 0;
  • }
  • }
  • }
  • public static int demander(String s) {
  • int f = 0;
  • System.out.print(s);
  • BufferedReader br =
  • new BufferedReader(new InputStreamReader(System.in));
  • try {
  • f = (new Integer(br.readLine())).intValue();
  • }
  • catch (IOException e) {
  • System.out.println("Erreur de lecture.");
  • }
  • return f;
  • }
  • }
  • class Ecriture {
  • public void ecrire(String texte)
  • {
  • String adressedufichier = System.getProperty("user.dir") + "\\nombre.txt";
  • try
  • {
  • FileWriter fw = new FileWriter(adressedufichier, true);
  • BufferedWriter output = new BufferedWriter(fw);
  • output.write(texte);
  • output.flush();
  • output.close();
  • }
  • catch(IOException ioe){System.out.println("erreur : " + ioe );}
  • }
  • }
import java.io.*;

class Nbprem {



public static void main(String[] argv) throws IOException {
	int Depart;
	Depart = demander("Combien de nombres?");
	// On ouvre le fichier nombre.txt en ecriture
	Ecriture Sortie= new Ecriture();
	// On cree un tableau
	int[] Tab = new int [Depart];
	// Quelques variables...
	int Z = 1;
	int N = 3;
	int X =0;
	Tab[1]=2;
	// On rentre dans une boucle infinie mais avec remise a zero de X
	while ( X < (Z+1) ) {
		if ( X > Depart ) { System.exit(0); };
		X =X + 1;
	// On prepare la difference
	int Entier = N / Tab[X];
	double Num = (double)N;
	double Denom = (double)Tab[X];
	double Decimal = Num / Denom;
	// Si N est divisible par l'un des nombres premiers deja trouvé...
	if (Decimal - Entier == 0) {
	// ...on l'incremente de 2...
		N = N + 2;
	// ...et on repart pour un tour!
		X = 0;
	}
	// Si l'eventuel diviseur de N testé depasse sa racine caree alors N est premier
	else if ( Tab[X] > Math.sqrt( N ) ) {
		Z = Z +1;
		if ( Z > Depart ) { System.exit(0); };
		// On le mets dans notre tableau...
		Tab[Z] = N;
		//...et on le stocke dans nombre.txt;
		String Premier = String.valueOf(N);
		Sortie.ecrire(Premier + "|" );
		// et on repart pour un tour!!
		N = N + 2;
		X = 0;
		}
	}

}

public static int demander(String s) {
	int f = 0;
	System.out.print(s);
	BufferedReader br =
	new BufferedReader(new InputStreamReader(System.in));
	try {
		f = (new Integer(br.readLine())).intValue();
	}
	catch (IOException e) {
		System.out.println("Erreur de lecture.");
	}
	
	return f;
}
}


class Ecriture {

    public void ecrire(String texte)
    {
        String adressedufichier = System.getProperty("user.dir") + "\\nombre.txt";
        try
        {
            FileWriter fw = new FileWriter(adressedufichier, true);
            BufferedWriter output = new BufferedWriter(fw);
            output.write(texte);
            output.flush();
            output.close();
	 }
        catch(IOException ioe){System.out.println("erreur : " + ioe );}
	}
 }

 Conclusion

Voila normalement j'ai pas fait d'erreur en recopiant :-))
On pourrait catcher l'erreur du tableau, ce serai plus joli, et aussi utiliser du big int pour repousser les limites du prog ( enfin bon je vais pas lancer le prog pour la nuit ).
Merci a mon prof de maths qui ma mis recemment au java, c'est super!!
Envoyé vos commentaires et/ou vos ameliorations, merci!
n.iz@wanadoo.fr


 Sources de la même categorie

IMPLÉMENTATION DE L'ENSEMBLE C AVEC JAVA par Scupper
CALCUL D'EXPONENTIEL ( PRÉCISION MODIFIABLE) par Scupper
Source avec Zip TRANSFORMATION D'UNE EXPRESSION ARITHMETIQUE (INFIXÉ) EN POS... par billatosco
PROBLÈME DES N-REINES par jojolemariole
Source avec Zip ARRAYMATRIX -MATRICE MULTIDIMENSIONELLE ET GÉNÉRIQUE- , IMP... par labandus

 Sources en rapport avec celle ci

CRIBLE D'ERATOSTHENE par chabacha
Source avec Zip TEST SUR NOMBRES PREMIERS par amundain
Source avec Zip Source avec une capture CALCULER UNE ÉQUATION MATHÉMATIQUE COMPLEXE DANS UN STRING E... par DeadlyPredator
Source avec Zip TOUTES LES OPÉRATIONS POSSIBLES SUR UNE MATRICE par Captain Igloo
CALCUL DE PI par cyberfastfred

Commentaires et avis

Commentaire de Neozix le 15/12/2002 08:19:00

c'est dommage, l'idée de base est bonne, la sortie dans un fichier. Mais bon que je mettes 200, 20 ou 10 chiffres il y a chaque fois des outofboundexceptions....

Commentaire de niiizzzz le 16/12/2002 21:23:36

c'est normal!!Regarde le code!!C'est pourquoi je proposai d'attraper cette erreur avec un try ... catch mais je debute et je ne sais quelle erreur est a attraper. De tte facon, ca ne gene pas le bon fonctionnement du prog.
Le fait de changer la taille du tableau ne change rien puisque on le defini a partir de la valeur entrée ( c'est les 2 premieres lignes du code...faut regarder) et qu'on calcule jusqu'a sa fin dans tt les cas.
J'espere que tu a mieux compris le pourquoi du comment

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Automate java (calcul d'une expression mathématique simple) [ par Raph113 ] Bonjour à tous, je m'adresse à vous car j'ai un projet en java à réaliser et je suis un desesperé. Voila donc notre projet consiste à réaliser une app Calcul sur de grand nombre [ par Dinsfire ] Bonjour, Je suis actuellement sur un projet où mon but est de créer une calculatrice qui sera capable de calculer des nombres plus grand que des doub librairie calcul statistique java [ par profiter ] bonjour, est ce que vous pouvez indiquer un lien vers une librairie pour le calcul statistique : la variance la covariance la correlation les vescteur calcul d'integrale triples [ par soaaziz ] Bonjour,je suis un ingénieur en informatique et je suis intégré dans un projet purement mathématiquema mission consiste a réaliser un programme qui pe calcul d'integrale triples [ par soaaziz ] Bonjour, je suis un ingénieur en informatique et je suis intégré dans un projet purement mathématique ma mission consiste a réaliser un programme qui calcul d'une surface [ par mersai ] bonjour, dans un repère cartésien, j'ai un ensemble de points dont les coordonnées x et y sont connues. ils sont a l'intérieur d'un rectangle dont la calculer le nbre de semaine [ par NesMan ] Salut je veux s'avoir s'il existe un code source permettant de calculer       le nombre de semaines ou de jours que je l'ai besoin le plus tot possibl editeur de signale [ par mohamedsss16 ] je suis entrain de réaliser un projet en java sur eclipse ("editeur de signale")ce projet a comme role de representer le graphe des fonction mathémati


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 3,713 sec (3)

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