begin process at 2012 05 27 15:15:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CRIBLE D'ERATOSTENE ET GÉNÉRATION DE PAGES WEB.

CRIBLE D'ERATOSTENE ET GÉNÉRATION DE PAGES WEB.


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :19/10/2003 Vu / téléchargé :4 491 / 98

Auteur : TeLeTUbIz

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

 Description

Cliquez pour voir la capture en taille normale
Ceci est un prgramme (mon premier ici) qui calcul une table des nombres premiers grâce au crible d'Eratostene et génère des pages webs en résultat.
Le logiciel est assez complet, c'est la version 1.3.

Désolé si le HTML n'est pas très clair, tout les sauts de lignes sont remplacés par des \n, donc ca rend un peu illisible le truc.
J'ai fait ça grâce à word (remplacer les saut de ligne par \n) et le code générique qui m'a servi de base a été fait sous Dreamweaver et modifié à la main pour la clarté et l'efficacité.

Voilà, j'espère que des gens pourront me donner des conseils pour simplifier encore.


P.S: Ah oui, ce code est valable pour une plateforme Win32 uniquement, et est compilé avec succès sous VC++ 6.0

Source

  • #define COL 6
  • #define LIG 200
  • #include <iostream.h>
  • #include <fstream.h>
  • #include <stdlib.h>
  • #include <sys\timeb.h>
  • #include <conio.h>
  • void crible(int n, bool erat[]); // Criblage d'Eratostène.
  • int genere(int n, int compte, int table[]); // Génere un dico HTML.
  • double diff(timeb *start, timeb *end); // Renvoie end-start en secondes et microsecondes.
  • void main()
  • {
  • system("title nbp v1.3 by Bloomwhite (2002-2003)");
  • int m, n, i, j;
  • bool *erat;
  • int *table;
  • // initialisation des temps
  • timeb *debutc, *finc, *debutg, *fing;
  • finc = new timeb;
  • debutc = new timeb;
  • fing = new timeb;
  • debutg = new timeb;
  • cout << "Nous allons faire une table de nombre premiers grace a la\n";
  • cout << "methode du crible d'eratostene\n-----------------------------------\n";
  • cout << "\nChoisissez une taille (en Mo): ";
  • cin >> m;
  • n = m*1048576;
  • erat= new bool[n];
  • ftime(debutc); // démarrage du compteur1
  • cout << "\n\ncriblage..." << endl;
  • crible(n, erat);
  • cout << "comptage du nombre de premiers..." << endl;
  • int compte =0;
  • for (i=0; i<n; i++)
  • {
  • if (erat[i])
  • compte++;
  • }
  • cout << "creation de la table de premiers..." << endl;
  • table= new int[compte];
  • for (i=0, j=0; i<n; i++)
  • {
  • if (erat[i])
  • {
  • table[j]= i+1;
  • j++;
  • }
  • }
  • cout << "liberation partielle de la memoire..." << endl;
  • delete[] erat;
  • erat = NULL;
  • ftime(finc); // fin du compteur1
  • ftime(debutg); // debut du compteur2
  • cout << "ecriture des fichiers HTML..." << endl;
  • genere(n, compte, table);
  • cout << "liberation totale de la memoire...\n" << endl;
  • delete[] table;
  • ftime(fing); // fin du compteur2
  • cout << "-----------------------------------\nTemps de creation liste:\t" << diff(debutc, finc) << endl;
  • cout << "Temps de generation des pages:\t" << diff(debutg, fing) << endl;
  • cout << "-----------------------------------\n" << endl;
  • cout << "Tapez enter pour ouvrir la page web, sinon espace" << endl;
  • while(true)
  • {
  • int key= getch();
  • if (key == 13)
  • { system("index.html");
  • break;
  • }
  • if (key == 32)
  • break;
  • }
  • }
  • /*###################### Fonctions ##########################*/
  • void crible (int n, bool erat[]) // la toute conne fonction...
  • {
  • int i,j;
  • for (i=0; i<n; i++)
  • erat[i]= true;
  • erat[0]=false;
  • for (i=1; i<n; i++)
  • {
  • if (erat[i])
  • {
  • for (j=2*(i+1); j<n+1; j+=(i+1))
  • erat[j-1]= false;
  • }
  • }
  • }
  • // GENERATION HTML // La c'est plus chaud...
  • int genere (int n, int compte, int table[])
  • {
  • system("mkdir tables"); // Et oui, une commande MS-DOS
  • int page, i, j, m= n/1048576;
  • int ici = 0;
  • // INDEX.HTML
  • ofstream index;
  • index.open("index.html");
  • index << "<html>\n<head>\n<title>Nombres premiers</title>\n<meta http-equiv='Content-Type'";
  • index << "content='text/html; charset=iso-8859-1'>\n</head>\n<frameset rows='*,458' frameb";
  • index << "order='NO' border='0' framespacing='0' cols='*'> \n <frame name='mainFrame' scr";
  • index << "olling='NO' src='tables/haut.html'>\n <frame name='bottomFrame' scrolling='YES' noresiz";
  • index << "e src='tables/page000001.html'>\n</frameset>\n<noframes> \n<body bgcolor='#FFFFFF' text='#";
  • index << "000000'>\n</body>\n</noframes> \n</html>\n";
  • index.close();
  • // /INDEX.HTML
  • // HAUT.HTML
  • ofstream haut;
  • haut.open("tables/haut.html");
  • haut << "<html>\n<head><title>nombres premiers</title></head>\n<body>\n\n<p align='center'";
  • haut << ">\n <b><font color='#990000' face='Geneva, Arial, Helvetica, san-serif' size='5'";
  • haut << "> \n TABLE DES NOMBRES PREMIERS<br>CALCULEE SUR UN TABLEAU DE ";
  • haut << m << " Mo.\n ";
  • haut << " </font></b>\n</p>\n\n<p align='right'>\n <i><font face='Georgia, Times New Roma";
  • haut << "n, Times, serif' size='1'> \n g&eacute;n&eacute;r&eacute;e par nbp v1.3<br>Copyr";
  • haut << "ight Bloomwhite 2002-2003\n </font></i>\n</p>\n\n<hr>\n\n<div align='center'> </";
  • haut << "div>\n\n</body>\n</html>\n";
  • haut.close();
  • // /HAUT.HTML
  • // BAS !!!
  • int nppp= LIG*COL; // nombre d'entiers par page
  • int pages= (compte/nppp); // nombre de pages
  • if (compte%nppp)
  • pages++;
  • char nom_page[27] = "tables/page000000.html"; // nom_page générique
  • // reg page_last
  • char LST[7];
  • if (pages/1000000) // erreur
  • return 1;
  • int page_100000 = (pages/100000);
  • int page_10000 = (pages/10000 - 10*(pages/100000));
  • int page_1000 = (pages/1000 - 10*(pages/10000));
  • int page_100 = (pages/100 - 10*(pages/1000));
  • int page_10 = (pages/10 - 10*(pages/100));
  • int page_1 = (pages - 10*(pages/10));
  • LST[0] = '0' + page_100000;
  • LST[1] = '0' + page_10000;
  • LST[2] = '0' + page_1000;
  • LST[3] = '0' + page_100;
  • LST[4] = '0' + page_10;
  • LST[5] = '0' + page_1;
  • LST[6] = '\0';
  • // 1 boucle par page
  • for (page=0; page < pages; page++)
  • {
  • page++;
  • char PCD[7];
  • char SVT[7];
  • char ACT[7];
  • // on decompose un entier de 6 chiffres en 6 de 1 chiffre
  • int page_100000 = (page/100000);
  • int page_10000 = (page/10000 - 10*(page/100000));
  • int page_1000 = (page/1000 - 10*(page/10000));
  • int page_100 = (page/100 - 10*(page/1000));
  • int page_10 = (page/10 - 10*(page/100));
  • int page_1 = (page - 10*(page/10));
  • // reg page_precedente
  • for (i= 0; i<6; i++)
  • PCD[i] = nom_page[11+i];
  • PCD[6] = '\0';
  • // reg page_actuel
  • nom_page[11] = '0' + page_100000;
  • nom_page[12] = '0' + page_10000;
  • nom_page[13] = '0' + page_1000;
  • nom_page[14] = '0' + page_100;
  • nom_page[15] = '0' + page_10;
  • nom_page[16] = '0' + page_1;
  • for (i= 0; i<6; i++)
  • ACT[i] = nom_page[11+i];
  • ACT[6] = '\0';
  • // reg page_suivante
  • page++;
  • // on decompose un entier de 6 chiffres en 6 de 1 chiffre
  • page_100000 = (page/100000);
  • page_10000 = (page/10000 - 10*(page/100000));
  • page_1000 = (page/1000 - 10*(page/10000));
  • page_100 = (page/100 - 10*(page/1000));
  • page_10 = (page/10 - 10*(page/100));
  • page_1 = (page - 10*(page/10));
  • page--;
  • /////////////////////////////////////////
  • SVT[0] = '0' + page_100000;
  • SVT[1] = '0' + page_10000;
  • SVT[2] = '0' + page_1000;
  • SVT[3] = '0' + page_100;
  • SVT[4] = '0' + page_10;
  • SVT[5] = '0' + page_1;
  • SVT[6] = '\0';
  • page--;
  • ofstream bas;
  • bas.open(nom_page);
  • // creation variables de localisation
  • int de= page*nppp+1;
  • int a= (page+1)*nppp;
  • // écriture localisation
  • bas << "<div align='center'>\n <p>\n ";
  • if (page)
  • bas << "<a href='page000001.html'>";
  • bas << "&lt;&lt;";
  • if (page)
  • bas << "</a>\n";
  • bas << "&nbsp;&nbsp;&nbsp;&nbsp;\n ";
  • if (page)
  • bas << "<a href='page" << PCD << ".html'>";
  • bas << "&lt;";
  • if (page)
  • bas << "</a>\n";
  • bas << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \n <font color='#009900' size='4'>nombres pr";
  • bas << "emiers de rang</font>\n <font color='#FF0000' size='4'><b> " << de << "</b>";
  • bas << "</font>\n <font size='4' color='#009900'>&agrave;</font>\n <font color='";
  • bas << "#FF0000' size='4'><b> ";
  • if (page != (pages-1))
  • bas << a;
  • else
  • bas << compte;
  • bas << "</b></font>\n <font size='4' color='#00990";
  • bas << "0'>sur</font>\n <font color='#FF0000' size='4'><b> " << compte<< " </b></fo";
  • bas << "nt>\n &nbsp;&nbsp;&nbsp;&nbsp;\n ";
  • if (page != (pages-1))
  • bas << "<a href='page" << SVT << ".html'>";
  • bas << "&gt;";
  • if (page != (pages-1))
  • bas << "</a>\n";
  • bas << " &nbsp;&nbsp;&nbsp;&nbsp;";
  • if (page != (pages-1))
  • bas << "<a href='page" << LST << ".html'>";
  • bas << "&gt;&gt;";
  • if (page != (pages-1))
  • bas << "</a>\n";
  • bas << "</p>\n</div>\n<table width='70%' border='5' align='center'>\n <tr>\n\n";
  • // écriture table
  • for (i=0, j=0; i<nppp && ici < compte; i++, ici++)
  • {
  • if(j==COL)
  • {
  • bas << " </tr>\n <tr>\n";
  • j=0;
  • }
  • bas << " <td width='9%'>" << table[ici] << "</td>\n";
  • j++;
  • }
  • // écriture finale
  • bas << " </tr>\n</table>\n\n<p align='center'>\n <i><font face='Georgia, Times New R";
  • bas << "oman, Times, serif' size='1'> \n g&eacute;n&eacute;r&eacute;e par nbp v1.3<br";
  • bas << ">Copyright Bloomwhite 2002-2003\n </font></i>\n</p>\n\n</body>\n</html>\n";
  • bas.close();
  • }
  • // /BAS !!!
  • return 0;
  • }
  • double diff(timeb *start, timeb *end)
  • {
  • double temps = ((*end).time - (*start).time)/1.;
  • double milli = ((*end).millitm - (*start).millitm) / 1000.;
  • return (temps + milli);
  • }
#define COL 6
#define LIG 200

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <sys\timeb.h>
#include <conio.h>


void crible(int n, bool erat[]);			// Criblage d'Eratostène.
int genere(int n, int compte, int table[]); // Génere un dico HTML.
double diff(timeb *start, timeb *end);		// Renvoie end-start en secondes et microsecondes.




void main()
{
	system("title nbp v1.3 by Bloomwhite (2002-2003)");
	int m, n, i, j;
	bool *erat;
	int *table;
// initialisation des temps
	timeb *debutc, *finc, *debutg, *fing;
	finc = new timeb;
	debutc = new timeb;
	fing = new timeb;
	debutg = new timeb;


	cout << "Nous allons faire une table de nombre premiers grace a la\n";
	cout << "methode du crible d'eratostene\n-----------------------------------\n";
	cout << "\nChoisissez une taille (en Mo): ";
	cin >> m;

	n = m*1048576;
	erat= new bool[n];

	ftime(debutc); // démarrage du compteur1
	cout << "\n\ncriblage..." << endl;
		crible(n, erat);
	cout << "comptage du nombre de premiers..." << endl;
		int compte =0;
		for (i=0; i<n; i++)
		{
			if (erat[i])
				compte++;
		}
	cout << "creation de la table de premiers..." << endl;
		table= new int[compte];
		for (i=0, j=0; i<n; i++)
		{
			if (erat[i])
			{
				table[j]= i+1;
				j++;
			}
		}
	cout << "liberation partielle de la memoire..." << endl;
		delete[] erat;
		erat = NULL;
	ftime(finc); // fin du compteur1
	ftime(debutg); // debut du compteur2
	cout << "ecriture des fichiers HTML..." << endl;
		genere(n, compte, table);
	cout << "liberation totale de la memoire...\n" << endl;
		delete[] table;
	ftime(fing); // fin du compteur2

	cout << "-----------------------------------\nTemps de creation liste:\t" << diff(debutc, finc) << endl;
	cout << "Temps de generation des pages:\t" << diff(debutg, fing) << endl;
	cout << "-----------------------------------\n" << endl;

	cout << "Tapez enter pour ouvrir la page web, sinon espace" << endl;
	while(true)
	{
		int key= getch();
		if (key == 13)
		{	system("index.html");
			break;
		}
		if (key == 32)
			break;
	}
}



/*###################### Fonctions ##########################*/

	void crible (int n, bool erat[]) // la toute conne fonction...
	{
		int i,j;
		for (i=0; i<n; i++)
			erat[i]= true;
		erat[0]=false;
		for (i=1; i<n; i++)
		{
			if (erat[i])
			{
				for (j=2*(i+1); j<n+1; j+=(i+1))
					erat[j-1]= false;
			}
		}
	}





// GENERATION HTML // La c'est plus chaud...

int genere (int n, int compte, int table[])
{
	system("mkdir tables");			// Et oui, une commande MS-DOS
	int page, i, j, m= n/1048576;
	int ici = 0;

// INDEX.HTML
	
	ofstream index;
	index.open("index.html");

	index << "<html>\n<head>\n<title>Nombres premiers</title>\n<meta http-equiv='Content-Type'";
	index << "content='text/html; charset=iso-8859-1'>\n</head>\n<frameset rows='*,458' frameb";
	index << "order='NO' border='0' framespacing='0' cols='*'> \n  <frame name='mainFrame' scr";
	index << "olling='NO' src='tables/haut.html'>\n  <frame name='bottomFrame' scrolling='YES' noresiz";
	index << "e src='tables/page000001.html'>\n</frameset>\n<noframes> \n<body bgcolor='#FFFFFF' text='#";
	index << "000000'>\n</body>\n</noframes> \n</html>\n";

	index.close();

// /INDEX.HTML


// HAUT.HTML

	ofstream haut;
	haut.open("tables/haut.html");

	haut << "<html>\n<head><title>nombres premiers</title></head>\n<body>\n\n<p align='center'";
	haut << ">\n  <b><font color='#990000' face='Geneva, Arial, Helvetica, san-serif' size='5'";
	haut << "> \n  TABLE DES NOMBRES PREMIERS<br>CALCULEE SUR UN TABLEAU DE ";
	haut << m << " Mo.\n ";
	haut << " </font></b>\n</p>\n\n<p align='right'>\n  <i><font face='Georgia, Times New Roma";
	haut << "n, Times, serif' size='1'> \n  g&eacute;n&eacute;r&eacute;e par nbp v1.3<br>Copyr";
	haut << "ight Bloomwhite 2002-2003\n  </font></i>\n</p>\n\n<hr>\n\n<div align='center'> </";
	haut << "div>\n\n</body>\n</html>\n";

	haut.close();

// /HAUT.HTML


// BAS !!!
	
	int nppp= LIG*COL;			// nombre d'entiers par page
	int pages= (compte/nppp);	// nombre de pages
		if (compte%nppp)
			pages++;
	char nom_page[27] = "tables/page000000.html";		// nom_page générique
	
	// reg page_last
	char LST[7];
	if (pages/1000000) // erreur
		return 1;
	int page_100000 = (pages/100000);
	int page_10000 = (pages/10000 - 10*(pages/100000));
	int page_1000 = (pages/1000 - 10*(pages/10000));
	int page_100 = (pages/100 - 10*(pages/1000));
	int page_10 = (pages/10 - 10*(pages/100));
	int page_1 = (pages - 10*(pages/10));
		LST[0] = '0' + page_100000;
		LST[1] = '0' + page_10000;
		LST[2] = '0' + page_1000;
		LST[3] = '0' + page_100;
		LST[4] = '0' + page_10;
		LST[5] = '0' + page_1;
		LST[6] = '\0';
	
	// 1 boucle par page
	for (page=0; page < pages; page++)
	{
		page++;
		char PCD[7];
		char SVT[7];
		char ACT[7];

		// on decompose un entier de 6 chiffres en 6 de 1 chiffre
		int page_100000 = (page/100000);
		int page_10000 = (page/10000 - 10*(page/100000));
		int page_1000 = (page/1000 - 10*(page/10000));
		int page_100 = (page/100 - 10*(page/1000));
		int page_10 = (page/10 - 10*(page/100));
		int page_1 = (page - 10*(page/10));


		// reg page_precedente
		for (i= 0; i<6; i++)
			PCD[i] = nom_page[11+i];
		PCD[6] = '\0';

		// reg page_actuel
		nom_page[11] = '0' + page_100000;
		nom_page[12] = '0' + page_10000;
		nom_page[13] = '0' + page_1000;
		nom_page[14] = '0' + page_100;
		nom_page[15] = '0' + page_10;
		nom_page[16] = '0' + page_1;
		for (i= 0; i<6; i++)
			ACT[i] = nom_page[11+i];
		ACT[6] = '\0';


		// reg page_suivante
			page++;
			// on decompose un entier de 6 chiffres en 6 de 1 chiffre
			page_100000 = (page/100000);
			page_10000 = (page/10000 - 10*(page/100000));
			page_1000 = (page/1000 - 10*(page/10000));
			page_100 = (page/100 - 10*(page/1000));
			page_10 = (page/10 - 10*(page/100));
			page_1 = (page - 10*(page/10));
			page--;
		/////////////////////////////////////////
		SVT[0] = '0' + page_100000;
		SVT[1] = '0' + page_10000;
		SVT[2] = '0' + page_1000;
		SVT[3] = '0' + page_100;
		SVT[4] = '0' + page_10;
		SVT[5] = '0' + page_1;
		SVT[6] = '\0';

		page--;
		
		ofstream bas;
		bas.open(nom_page);

		// creation variables de localisation
		int de= page*nppp+1;
		int a= (page+1)*nppp;
		
		// écriture localisation
		bas << "<div align='center'>\n  <p>\n    ";
		if (page)
			bas << "<a href='page000001.html'>";
		bas << "&lt;&lt;";
		if (page)
			bas << "</a>\n";
		bas << "&nbsp;&nbsp;&nbsp;&nbsp;\n    ";
		if (page)
			bas << "<a href='page" << PCD << ".html'>";
		bas << "&lt;";
		if (page)
			bas << "</a>\n";
		bas << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \n    <font color='#009900' size='4'>nombres pr";
		bas << "emiers de rang</font>\n    <font color='#FF0000' size='4'><b> " << de << "</b>";
		bas << "</font>\n    <font size='4' color='#009900'>&agrave;</font>\n    <font color='";
		bas << "#FF0000' size='4'><b> ";
		if (page != (pages-1))
			bas << a;
		else
			bas << compte;
		bas << "</b></font>\n    <font size='4' color='#00990";
		bas << "0'>sur</font>\n    <font color='#FF0000' size='4'><b> " << compte<< " </b></fo";
		bas << "nt>\n    &nbsp;&nbsp;&nbsp;&nbsp;\n    ";
		if (page != (pages-1))
			bas << "<a href='page" << SVT << ".html'>";
		bas << "&gt;";
		if (page != (pages-1))
			bas << "</a>\n";
		bas << "    &nbsp;&nbsp;&nbsp;&nbsp;";
		if (page != (pages-1))
			bas << "<a href='page" << LST << ".html'>";
		bas << "&gt;&gt;";
		if (page != (pages-1))
			bas << "</a>\n";
		bas << "</p>\n</div>\n<table width='70%' border='5' align='center'>\n  <tr>\n\n";

		// écriture table
		for (i=0, j=0; i<nppp && ici < compte; i++, ici++)
		{
			if(j==COL)
			{
				bas << "  </tr>\n  <tr>\n";
				j=0;
			}
			bas << "    <td width='9%'>" << table[ici] << "</td>\n";
			j++;
		}

		// écriture finale
		bas << "  </tr>\n</table>\n\n<p align='center'>\n  <i><font face='Georgia, Times New R";
		bas << "oman, Times, serif' size='1'> \n  g&eacute;n&eacute;r&eacute;e par nbp v1.3<br";
		bas << ">Copyright Bloomwhite 2002-2003\n  </font></i>\n</p>\n\n</body>\n</html>\n";
		bas.close();
	}

// /BAS !!!

	return 0;
}


double diff(timeb *start, timeb *end)
{
	double temps = ((*end).time - (*start).time)/1.;
	double milli = ((*end).millitm - (*start).millitm) / 1000.;
	return (temps + milli);
}

 Conclusion

Pour voir un exemple (en HTML), aller sur http://bloomwhite.free.fr/primes/

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • A FAIRE.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier51 octets
  • bnp.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier8 550 octets
  •   premiers___Win32_Release
    • nbp v1.3.exeTélécharger ce fichier [Réservé aux membres club]65 536 octets

Télécharger le zip


 Sources du même auteur

[STL] CONNAITRE LA TAILLE D'UN FICHIER ET COPIER DANS UN STR...
Source avec Zip TRI PAR TAS GÉNÉRIQUE. RAPIDE ET EFFICACE.
TOURS DE HANOÏ: INTRODUCTION AUX ALGOS RÉCURSIFS.
Source avec Zip 1 000 000 DE NOMBRES PREMIERS EN 0.062 SECONDES ?
POINTEURS SUR FONCTIONS

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de Kirua le 19/10/2003 14:06:22

eh c'est sympa ton prog! et vachement rapide
j'ai généré près de 700 000 nb premiers en moins de 13 secondes, écritures sur fichier compris (en fait l'écriture a pris 9 secondes sur le tout ^^)
j'aime :-)

Commentaire de Kirua le 19/10/2003 22:00:21

alors j'ai voté 8/10 parce que...

- Le programme est écrit d'une manière très séquentielle, ligne à ligne, c'est pas excessivement complexe (moi j'aime surtout la POO, même si ici de fait ce n'était pas d'application.)

- Il manque qq chose: on devrait pvr entrer un nombre et le programme vérifie alors s'il est premier (je reconnais que ça sort de son utilité première)

mais 8/10 aussi parce que:

- ça marche! eh oui, on ne peut pas en dire autant de tous les codes postés

- ça donne un fichier (et même un ensemble) html, format universel facilement exploitable et facile à éditer (bcp de programmeurs le maîtisent, on en a tous besoin un jour ou l'autre)

- la donnée à préciser est la taille totale des fichiers et non pas le nombre de nombres, ce que je trouve plus fin. c'est plus intelligent, et c'est une bonne idée.


Tiens un truc à faire, si tu pouvais tester le code sur plusieurs machines, pr faire un benchmark, tu testes pour 25 Mo par exemple.

Pour mon P4 2.26Ghz 256 DDR DD à 7200 RPM j'en ai pour:

6.625s de criblage
53.375s d'écriture sur fichier

avec 25 Mo, ce qui nous fait 1637054 nombres, le dernier étant: 26214379.

voilà ^^

Commentaire de TeLeTUbIz le 20/10/2003 19:28:00

Merci pour ta note Kirua, je pensais pas avoir autant.
En fait à l'origine, on pouvait demander un nombre et voir s'il était premier. Ca calculais avec la table d'Erat. mais le problème c'ets pour les nombres en dehors... Dans une prochaine version (si un jour j'ai le courage de retoucher ce code), il y'aura une liste/menu dans les pages html pour arriver à des séquences de nombres premiers (car sur mille page obtenir la 600eme à partir de l'index est très difficile sous cette forme...). Bref, bateau, mais faut connaître le code html et avoir le courage...

Une petite erreur de ta part: la taille marquée n'est pas la taille des fichiers, mais de la table d'Eratostene (en fait une table avec un 1 ou 0 par nombre (premier ou pas)). Ca reviens parfois à peu près au même.

Sinon, pour le benchmark c'est une bonne idée, le calcul de la table pourrait servir d'indice pour le processeur + la mémoire + le bus, etc... quand à l'écriture, la fragmentation des fichiers la vitesse disque, le tampon disque, etc...
Dommage que ce soit pas plus détaillé.

P.S: j'ai vu ta chenille en openGL, bravo c'est une réussite, surtout l'utilisation des classes.

Commentaire de Kirua le 20/10/2003 19:32:57

dis, pr la taille je m'en suis rendu compte, j'avais pr 50Mo de fichiers alors que j'avais choisi 25 Mo ds le programme.

Pr le html c ultra simple, renseigne toi c tjs utile. puis après tu pourras te mettre eu PHP, c follement amusant (lol), c simple comme pas possible.

vi moi j'aime la POO, je fias que ça, autant que possible je POO, ts les jours, à toute heure, pr tt projet, même ton programme là, j'en aurais fait un OO :-P avec une classe d'écriture de fichier html, et une autre pr la détermination des nb premiers. faut vivre avec son temps (euh, ok je fais pas de .NET, mais c pas pr la meme raison)

Commentaire de TeLeTUbIz le 20/10/2003 19:49:07

ouai, t'as raison, je changerais le html des que j'en aurais le temps (et le courage...)
Pas con pour la POO, surtout que c'est pas le premier prog qui me sort de l'HTML. En fait mes résultats sortent souvent en HTML, je sais pas c'est comme ça, j'aime.
Mais il faudrait des trucs plus "générique" que du simple copier/coller.
Bref faire un éditeur HTML pour les calculs divers ??? (lol)
Mais les classes, je débute, même si je sais m'en servir (un peu), j'ai pas le réflexe; pas comme toi...
Le PHP ?? Why not, faut voir...

Commentaire de Kirua le 20/10/2003 21:06:28

j'veux pas faire de pub, et en aucun cas je ne suis partenaire de ce site, mais je te conseil phpdebutant.om c'est excellent, comme tu programmes déjà dans 2 semaines tu jongles avec les bases de données, c super ^^

Commentaire de TeLeTUbIz le 20/10/2003 21:07:51

ok je m'y mettrais.
En plus les bases de données, ca peut m'intérresser.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,562 sec (4)

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