Accueil > > > CALCUL DE NOMBRES PREMIERS
CALCUL DE NOMBRES PREMIERS
Information sur la source
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
Commentaires et avis
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
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|