begin process at 2010 02 10 00:54:59
  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 :9 032

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

Source avec Zip CLASSE MATRICE par frankladen11
Source avec Zip Source avec une capture RÉSOLUTION D'ÉQUATION GRÂCE AU CALCUL DES DÉTERMINANTS par frankladen11
Source avec Zip TYPE DE DONNÉES ABSTRAIT GRAPHE par smutsonberg
Source avec Zip Source avec une capture SIMPLEXE ET DUAL par MrRenaud
Source avec Zip ALGORITHME DE BELLMAN, CALCUL DES TEMPS AU PLUS TÔT ET RECHE... par michaelcourcy2005

 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 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 les grilles de calcul [ par sali29 ] salut tout le monde , j'ai un probleme de grilles de calcul et je ne sais pas comment deviser une grande application en plusieurs taches !!! sur un re API Calcul matriciel pour traitement image [ par snotocs ] Bonjour à tous, J'espere être au bon endroit pour poser cette question et espère trouver ici des réponses à ma/mes questions. D'avance merci. Pour m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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

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