LES NOMBRES PREMIERS (CRIBLE D'ERATHOSTÈNE)

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 25 juil. 2004 à 22:11
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 29 juil. 2004 à 13:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24873-les-nombres-premiers-crible-d-erathostene

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 juil. 2004 à 13:04
c'est pour ça que séparer C et C++ n'empéchera pas les programmes de débutants...

Et de toute façon, ces programmes même basics sont constructifs pour l'auteur au moins...

même si le lecteur s'emerde un peu, lui progresse, et c'est un peu le but des forums d'apel a l'aide...

Je pourais demander a tot les programmeurs ici présent quel était leur premier programme, je penses qu'il ne me répondront pas qu'ils ont commencé par réécrire le kernel de MrTorvald avec des fonctionalitées suplémentaires, et qu'il l'ont garedé pour eux car ils trouvaient ce programme sans interet...

Vous me réponderez ou hello world, ou ce crible, ou un autre programme de base... Et seconde question, a combien de personnes vous l'avez montré ?
Et la, je penses que les réponses seront nombreuses...

Ces questions ne s'apliquent qu'aux personnes aprennant seules, ceux qui prennnet des cours ont tout vu diférement (enpré maché...)...

Et je penses que c'est cnormal...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 juil. 2004 à 12:56
Mais rassure toi, beaucoup de progs pro ne sont qu'en C, tel le kernel mode ou le C++ est exclu.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 juil. 2004 à 12:51
cette discution est partie du fait que l'on devrait séarer C et C++...

Je n'ai jamais dis que j'était un crack en programmation, je n'ai jamais fait un programme C++, mais j'ai fait un bon paquet de programmes, évidement,ayant perdu mon temp dans un language aussi "merdique1" que le Qbasic ( j'y ai passé quatre ans, j'ai fait un tas de programmes, j'en ai gardé 104...) je n'ai pas touché aux suptilitées de languages aussi performant que le C et le C++.

Mais je penses que le C n'est pas un language 'incompétant', pour la simple raison que les codes des linux mag sont quasiment otus en C (le reste étant du perl), si ils le présente, c'est donc que l'on peut en faitre quelquechose...

Je penses que l'on ne devrait pas séparer ces deux languges car ils sont vraiment proches...

Les seuls arguments adérant a la thèse adverse : Bcp de programmes C sont des programmes pour débutants...

Je réponds possible, et c'est en s'entrainant avec les meilleurs que l'on devient des leurs (c'est pour cette raison que je suis venu sur ce site, et je penses avoir fait pas mal de progrès depuis que j'ai posté ma première source)

Second argument un programme C est aussi compilable par un compilo C++ donc, on pourra donc poster nos sources a deux endroits... plutot illogique comme démarche non ?


Dsl si j'ai paru prétentieux, je ne le suis pas en général... Je sais parfaitement que le C++ n'est pas mon demaine, que je débute seulement en programmation, que vous êtes largement plus qualifiés que moi pour coder.
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
29 juil. 2004 à 02:32
zorg a raison :
"coucou747, les templates, le polymorphisme, tout ca, si tu ne connais pas, c'est que tu n'en as pas l'utilité, te "

Mais dans ce cas là polémique pas sur ce que tu ne connais pas coucou47
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
29 juil. 2004 à 02:28
"Les templates, a moins que je ne me trompe, c'est des calculs fait par le compilos qui permettent d'éviter le précalcul... c'est vrai que c'est pas faisable en C, mais on peut le faire a la main, ou avec un programme d'interprétation c..."

Tu te trompes ...


""Pour moi, le C++ n'a comme avantages que le fait que le code soit fait de plein de fonctions apelés automatiquement (dans les classes) et plein de fonctions réutilisables dans ces classes... Donc, plus simple pour commencer un projet après un autre projet finit..."

Ya quoi d'automatique ? Les classes permettent de faire des objets , de faire du polymorphisme , de l'heritage et de la surcharge , et si les namespaces sont suportés ca permet de hierarchisé, organisé et surcharger des classes dans les applications.

Je crois que tu as encore des années avant de comprendre ce qu'est le développement et surtout faire preuve un peu d'humilté.

"et j'ai 15 ans..." Je t'ai déjà dit que ton age ne justifie rien arrête de le sortir a toute les sauces

TheSaiB (avec un b comme seb) et J'ai 22 ans (ouaaaouuuuh) et j'ai encore beaucoup de chose à apprendre
zorg_archiviste Messages postés 7 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 29 juillet 2004
29 juil. 2004 à 01:18
BruNews, personnellement les API en win32, ca me saoule, c'est pas mon métier, et ca ne m'interesse pas. Je prefere l'informatique scientifique et toutes les technologies afférentes, du fortran à python, du C++ a CORBA, de la parallélisation via MPI sur réseau Myrinet, à l'optimisation vectorielle/superscalaire. C'est un champ vaste d'investigations, et je ne me vois pas être au chomage d'ici longtemps. D'ailleurs, je ne connais pas beaucoup de spécialistes dans ces technologies qui soit au chomage en ce moment. C'est une autre vision de l'informatique, moi ce qui me plait, c'est de mettre à genoux un teraflopique avec le dernier algo tout fraichement sorti d'un labo de cinglés pour envoyer des fusées sur la lune. Pas de faire des API en win32 (d'ailleurs je sais à peine compiler sur un PC sous windows). Chacun son truc.
coucou747, les templates, le polymorphisme, tout ca, si tu ne connais pas, c'est que tu n'en as pas l'utilité, te prends pas la tete avec ca. Comme je le dis souvent, ca sert a rien de planter un poireau avec une pelleteuse mécanique.
TheSaid, tu es dûr avec la jeunesse. :-)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2004 à 23:44
Exact, j'ai confondu cobol et fortran... dsl de cette erreur...

Les templates, a moins que je ne me trompe, c'est des calculs fait par le compilos qui permettent d'éviter le précalcul... c'est vrai que c'est pas faisable en C, mais on peut le faire a la main, ou avec un programme d'interprétation c...


enfin, je ne penses pas que mes programmes soient minables ou négligeables juste a cause du nombre de lignes...

"Tissus de bétises, je préfère m'abstraire de remarques.."
détaille stp

enfin, vos projets sont gros car vous programmez a plusieurs, je programme seul, depuis un an seulement, et j'ai 15 ans...
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
28 juil. 2004 à 22:27
J'ai oublié en relisant :

"mais tu mettra dix ans a créer un programme corect" c'était pour le FORTRAN... Tu dois en plus confondre avec le COBOL

Ciao
TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
28 juil. 2004 à 22:26
Pour Coucou47 :

"attendez vous comparez le C au fortrant, le fortrant, c'est extremmement rapide a executer, mais tu mettra dix ans a créer un programme corect...
"

Tu dois pas bien connaître le "Fortrant" parcequ'en l'occurrrence c'est le FORTRAN ...

"Personnelement je n'ai jamais vu de code de plusieurs millions de ligne, encore moins retouché, mon plus gros programme ne possède que 2000 lignes"

Ca correspond à la plus petite de mes classes sur mon projet actuel ... un projet avec -60000 est considéré comme un petit projet dans l'industrie... au passage ma boîte fais 25 développeurs ...

"En gros la diférence entre le C et le C++ c'est les classe, remplacable par des structs, malheureusement, on ne peut pas faire a=b+c si a, b et c sont des structs... C'est la seule chose qui aurait pu me pousser vers le C++... Mais j'ai fait sans, j'ai fait a=somme(b,c); ce qui a le même résultat..."

En vraiment très gros alors , parceque l'objet a du te passer au dessus de la tête , tout comme les templates ...

"Pour moi, le C++ n'a comme avantages que le fait que le code soit fait de plein de fonctions apelés automatiquement (dans les classes) et plein de fonctions réutilisables dans ces classes... Donc, plus simple pour commencer un projet après un autre projet finit..."

Tissus de bétises, je préfère m'abstraire de remarques..

"perso je suis en seconde, et j'éspère que quand j'aurais finbit mes étiudes ce sera un peu plus facile...
"

La jeunesse n'est pas une excuse, si tu t'embarques sur un sujet essaie d'en maîtriser les bases au minimums plutôt que d'enchaîner des commentaires inutiles et erronés.

Maintenant , Codes-SourceS est un espace de liberté, soyez plutôt constructif (comme le début des commentaires) et ouvert , que de vous bagaré sur des absurdités vide de sens..

Beubye

Seb
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2004 à 20:32
perso je suis en seconde, et j'éspère que quand j'aurais finbit mes étiudes ce sera un peu plus facile...

M'ai j'aimerais vraiment savoir si ces super calculateurs sont performants, si ils peuvent casser des clefs rsa et aes rapidement...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 juil. 2004 à 20:03
Je mets une question subsidiaire:
La grosse tole et ses tflops est-elle vraiment un but pour un developpeur, quand il sera licencie a 45 ans, quelle chance de se recaser ?
J'ai reussi a me mettre a mon compte a 40 ans, si j'avais ete specialise en classes C++ de gros calculs au lieu d'avoir manie tous les jours win32 API, je serai au chomage jusqu'a la retraite. Pas important ce genre de detail ?
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2004 à 19:37
polymorphisme ??? c'est pas uniquement pour un language interprété ?
Je croyais que ce style de "merde" excuses moi pour le therme, mais mon père (windowsien) a des problèmes avec des virus de ce style, n'était que du code se répliquant lui même en changeant des for par des while des while par des for, les noms de variable, la base des nombres utilisés, les commentaires, les textes afichés, les noms de fichiers temporaires, l'ordre des sub et fonctions ect...
Enfin, un progrtamme interprété qui se modifie lui même poour ne pas être repéré quoi...
gestion des accès en C++... je sais pas je vois vraiment pas a quoi ça peut aider le C++... Pour les problèmes de math, le C++ peut être franchement plus pratique a utiliser quand on fait des classes car on a les opérations de gérés, mais on le fait très bien en C aussi... (environ 300 lignes de codes avec plein de commentaires ^^)....

Pour moi, le C++ n'a comme avantages que le fait que le code soit fait de plein de fonctions apelés automatiquement (dans les classes) et plein de fonctions réutilisables dans ces classes... Donc, plus simple pour commencer un projet après un autre projet finit...

Je ne considère pas mes programmes comme de petits trucs, au lycé, on me prends pour un créateur de logiciels, juste a cause de mon site et d'un programme de stéganographie... Et moi, ça me suffit...

J'aimerais savoir si c'est pas trop indiscret en combien de temps tes calculateurs pouraient casser une clef rsa de 18 bits ? Et un AES a 128 bit?
zorg_archiviste Messages postés 7 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 29 juillet 2004
28 juil. 2004 à 19:24
coucou747, tu me vouvoies maintenant ? hi hi !
C'est en buchant qu'on devient bucheron, donc, on a tous commencé comme ca, sur un petit ordi, a faire des petits trucs, pour finir, pour certains d'entre nous, a programmer des trucs énormes sur des supercalculateurs téraflopiques, c'est une évolution normale. Quand tes codes seront plus gros, tes structures de données plus compliquées, que tu programmeras avec plusieurs autres personnes en meme temps sur les memes bouts de programmes, et que tes programmes devront gérer d'une facon ou d'une autre un probleme qui s'apparente au polymorphisme et/ou a la gestion des acces, tu passeras naturellement au C++.
Je suis entrain de travailler sur un Pollard-Rho (décomposition en facteurs premiers), quand j'ai fini je le mets sur ce site, et avec, je mettrais un petit exemple débile de ce qu'on peut faire en C++ en lisant Veldzuizen (mais qu'on peut aussi faire en C sans lire Veldhuizen). La premiere routine sera en C, du coup. Hu hu !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2004 à 19:15
attendez vous comparez le C au fortrant, le fortrant, c'est extremmement rapide a executer, mais tu mettra dix ans a créer un programme corect...

Je supose que je ne vous aprends rien si je vous dis que le C respècte en théorie la norme ANSI... Donc, si vous n'utilisez pas de librairie, un programme C tourne partout...

Vous dis que l'on a la puissance de calcul, vous me faites peur, En cryptographie, la théorie, en rsa, c'est que si on a un craker qui a un ordi plus puissant que celui qui a généré les clefs, le craker casse les clefs... (et rsa comme des, sauf qu'en des, le pc qui a créé les clefs n'est pas a prendre en paramètre)...

Personnelement je n'ai jamais vu de code de plusieurs millions de ligne, encore moins retouché, mon plus gros programme ne possède que 2000 lignes, et c'est uniquement du C, je trouve le C sufisement facile a utiliser pour mes projets (même si parfois je n'y arrives pas bien)...

En gros la diférence entre le C et le C++ c'est les classe, remplacable par des structs, malheureusement, on ne peut pas faire a=b+c si a, b et c sont des structs... C'est la seule chose qui aurait pu me pousser vers le C++... Mais j'ai fait sans, j'ai fait a=somme(b,c); ce qui a le même résultat...

Nous programmons dans une optique totalement diférente,, aparement vous dévelopez pour une entreprise ayant de gros moyens, moi, mon super calculateur est un céléron a 2.4 ghtz avec 512 de ram et 80 go de disque dur, et si je met mes ordis en calcul partagé, je ne pourais qu'ajouter un p1 a 133 mhtz, ou a 90 mhtz... Donc, mes programmes doivent êtres optimisés et rapides, è la fois optimisés mémoire et vitesse (préférence pour le vitesse)...
Je programme pour le grand public, pour partager, je donne tout mes programmes (sauf ceux que je n'utilises pas moi même)... Et je porte mes programmes sous d'autres os, pour que les windowsiens puissent utiliser mes programmes (j'ai porté par exemple ma stéganographie)...
Je ne possède pas de mac pour porter mes programmes sur cet os, mais si j'en possèdais un, ils seraient aussi portés pour mac, donc, nimporte qui pourrait utiliser mes programmes, et ce sera toujours comme ça (sauf quand j'aurais trouvé un travail, mais pas pour tout de suite) donc, pour le moment, si qqn veut utiliser mes programmes, même si il n'a pas de compilateur C, il me mail, et je lui envois, j'ai toujours fait come ça, et en général, mes programmes peuvent tourner sur des machines de très peu de puissance, et je ne shouaite ps faire changer cela...
zorg_archiviste Messages postés 7 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 29 juillet 2004
28 juil. 2004 à 18:52
coucou747, pour l'exemple C/C++, ca dépasse mes compétences, c'est de l'informatique théorique, existe il des problemes résolus dans un langage qui ne peuvent pas l'etre (résolus) dans un autre ? Je pense que non (Turing et tutti quanti). Je pense que tout est traduisible. Tout dépend des side-effects que tu prends en compte. Par exemple, dans le code tout en haut de ce thread, Kod32 a initialialement commis une erreur de débutant sur l'utlisation mémoire (erreur de pointeur ou d'allocation, je ne sais plus, suffit de lire le début du thread), s'il avait utilisé la STL (qui fait partie de la norme C++), il n'aurait pas commis cette erreur. Idem. Un petit rigolo a bien du montrer qu'on pouvait faire de la programmation par objet en fortran77, mais quelle perte de temps inutile ! Et plus ton code est gros, et plus il est inadapté a ton probleme, et plus il y aura des bugs. Donc tu as certainement raison, on peut tout faire en C, mais en pensant aux codes sur lesquels j'ai bossé, qui font tous plusieurs millions de lignes de codes, je ne peux m'empecher de me demander "ok, mais à quel prix ?". Et a l'heure actuelle, la puissance de calcul, on l'a (on a des teraflopiques en France, on est pas si arrieres que ca), pour pas trop cher, ce qu'on a toujours pas, ce sont des codes portables, maintenables a moindre cout, lisibles et sans bugs. D'ou l'interet d'utiliser du C++, peut etre.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2004 à 16:02
finalement nous pouvons nous entendre, j'ai du mal interprété tes premiers cmmentaires...

j'aimerais bien un exemple ou le c ne peut pas remplacer le c++ ?

j'aime bien les défis, je ne te promet pas de m'y mettre tout de suite, car j'ai déja quelques projets (quatres mais des gros) qui risquent de m'occuper pas mal.

Je ne suis pas très fort en math, ni en programmation, mais je n'ai jamais vu qqn me montrer un programme c++ et me dire qu'il n'était faisable en c...

Pour ton information, les nombres premiers sont interessants quand ils sont codés sur plus de 64 bits environ, et deviennent "dangereux" a utiliser au dessus de 128 car c'est plus ou moins illégal (ou inutile)...
un nombre de l'ordre de grandeur de 1000 000 000 est sur 32 bit donc ne peut pas servir en cryptographie car ma calculatrice pourait casser ceci en quelques minutes... (et j'ai pas la meilleur...)
Voila, je sais que je n'arrivees toujours pas a utiliser les nombres codés sur plus de 32 bits, mais je m'y active en C !!!
Tu trouveras surement que le C est un peu inutile pour ce style de programme, car on ne peut pas vraiment automatiser le programme, dans le meileur des cas, on fera a=somme(b,c) etc... mais on gagne un peu en vitesse. En math un programme rapide est un bon programme, la qualitée d'un programme de math se mesure avec math.h et Kcalc, pas en regardant le code source!!! On a forcé une clef rsa de 64 bit en 4 ans avec plusieurs centaines d'ordinateurs en réseau, penses tu que le temps soit vraiment quelquechose de négligable ?
Un windowsien ne va pas patienter 20 minutes pour crypter un message de la meiulleur façon possible, il préfèrera utiliser un système de mot de passe qui lui cryptera un fichier de 1mo en 0.005 secondes, mais malheureusement, un craker pourraa retrouver le texte d'origine en quelques heures... Tant que l'homme ne sera pas patient, on devra toujours chercher la vitesse et tant que les ordis ne feront pas 10000 thzr alors on cherchera toujours...
(et quand ces ordis sortiront, on cherhcera toujours car on aura de nouveaux besoins de vitesse)
zorg_archiviste Messages postés 7 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 29 juillet 2004
28 juil. 2004 à 15:15
Coucou747, t'as encore pas compris grand chose ...
Un simple petit bout de code en C qui implante un algo déja vu et revu mille fois, je trouve pas ca tres utile au niveau apprentissage, justement. Ok, c'est un acte de motivation que de poster cette source, mais globalement, je trouve l'interet assez limité pour les lecteurs.
Je n'ai pas dit que le C++ était meilleur que le C, en plus. Et je n'ai pas parlé de beauté de code non plus ...
Je disais juste qu'un algo moins trivial et/ou une technique de programmation plus tricky, par exemple en C++, aurait été plus intéressants.
Quant à mes sources, elles sont à mon travail d'où elles ne peuvent sortir et je ne programme pas par plaisir a la maison sur mon petit pc.
Les ordres de grandeurs des nombres premiers que j'ai donné étaient évidemment sans importance.
Quand je parlais de Veldhuizen, c'était juste pour évoquer ce que le C++ sait faire en informatique scientifique et que le C fait bien plus laborieusement. De toute façon, un beau programme est un programme efficace, et un programme efficace, ce n'est pas uniquement un programme qui crache des résultats rapidement.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2004 à 14:43
ah oui, t'avais pas répondu a cette question, a quoi sert un nombre premier compris entre 900 000 000 et 1 000 000 000 ? personnelement je ne vois pas !!!
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 juil. 2004 à 14:25
Tu ne poste pas de sources car tu as peur de te retrouver en prison...
Mais que fais tu comme styles de sources ?
Je dois avouer que moi non plus, je ne poste pas toutes mes sources, mais je ne fais pas que des sources dangereuses (et quand j'en fais, je ne les utilises pas, donc, je ne suis pas dans l'illégalitée...)
Qu'est- ce qui est dégrangeant ? la nature de tes sources (mail bombing, cryptographi > 128 bits logiciel de hack crack ? .... etc) Ou les brevets logiciels ? Seconde solution, les brevets logiciels, (fais tu des jeux du genre freecraft ?)

Tu préfère le c++ par raport au C pour la beautée du code... pourquois pas, simplement, un code en C bien fait est quand me plus joli qu'un code simple en C++...

Le C moins bon que le C++ en math ??? Explique mois stp, je ne prendreais pas le temps de lire ton livre, j'ai trop de lecture en ce moment, trop de tutoriaux, et trops de projets programmation, je ne trouverais pas le temps de lire ton livre, mais donne moi quelques arguments stp...

En C on ne fais pas forcément de moins bons codes qu'en C++ personeleent je ne considère pas n'avoir fait que des bons codes (j'ai commencé par le Qbasic...) mais je penses que ce code tout en étant largement optimisable est un bon code de départ (je suis toujours parti du principe que c'est en s'entrainant avec les grands que l'on deviens grand... donc, qi ce code était séparé des meilleurs codes, personne ne serais allé le voir, tout le mondeserais resté sur les mailleurs codes sans jamais aller voir celui ci qui avait pourtant besoin d'un peu d'aide)

C++ meilleur que C... je trouves ça assez pitoyable de se limiter a l'argument de la beautée du code pour dire que ces deux languages devraient être séparés... Devrais-je te rapeler qu'un code C est un code C++ alors les codes C auraient êtés postés en double...

Le tout n'est pas de nommer son fichier .cpp, après, il faut savoir y mettre des choses a l'intèrieur...

Tu disais pour la beautée du code "a deux trois mots près" le C++ est plus aprécialbe que le C... Détaille, qu'apelles tu beautée du code ?
kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
28 juil. 2004 à 14:03
Bouh le vilain grincheux qui se la joue mathematicien des temps moderne :p Je plaisante bien sur, je ne veux en aucuns cas t'énerver plus que tu ne l'es déjà (faudra penser à changer ton clavier qui doit souffrir, le pauvre...)

Je précise juste la raison de mon code avant de déclencher la 3° guerre mondiale. Je trouve que l'algorithme est intéressant en lui meme, je sais bien qu'on utilise plus ça pour tester si un nombre est premier ou non, mais je trouve intéressant de traduire en programmation une méthode que l'on voit souvent au lycée en barrant les cases d'un tableau de nombres sur le gros tableau noir de l'école.

>>"Finalement, je ne poste pas de sources parce que j'ai pas envie de me retrouver en prison."
Ou peut etre pas envi de perdre ton temps à répondre à des critiques qui n'en valent pas la peine.

Très cordialement.
zorg_archiviste Messages postés 7 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 29 juillet 2004
28 juil. 2004 à 00:24
Cher coucou747, tu n'as un peu rien compris à mon post.
Je ne remets pas en cause le crible du vieux grec, je remets en cause l'utilisation qui en est faite. Et l'interfaçage qui en est fait. Le crible est une méthode qui utilise des données persistantes, d'où l'idée ingénieuse de stocker les résultats dans un fichier de sortie. L'idée aurait été encore plus ingénieuse si on avait lu un fichier en entrée. Au passage, n'importe quel éleve de licence en math est meilleur en math que le vieux grec d'ailleurs, mais bon, passons, ce n'est pas le lieu de faire un cours d'histoire des mathématiques.
L'utilisation du C pour faire ce genre de calculs ne pose évidemment pas de problèmes, si ce n'est que la solution proposée est une solution standart (et initialement fausse, je le rappelle, puisqu'il y a eu des corrections par la suite) qui n'apporte par grand chose à l'art de la programmation.
Un programme en C++, utilisant les techniques propres au C++, de mon point de vue, aurait apporté plus de choses aux lecteurs, en particulier un programme bien tricky utilisant des enum template et des spécialisations dans tous les sens.
Les performances du dit programme en C++ aurait été strictement identiques au programme en C d'ailleurs.
Finalement, quant a l'utilisation du C++ en matiere de calcul scientifique, je te conseille de lire les articles de Monsieur Todd Veldhuizen. Tu apprendras des trucs.
Parce que ce qui fait la performance d'un programme de plusieurs millions de ligne de codes, c'est rarement la routine interne qui calcul les nombres premiers et qui fait 10 lignes. D'ailleurs, tu n'as pas l'air bien versé dans l'art de la programmation scientifique, mais tu devrais te renseigner un peu plus sur le sujet avant de revenir sur le vieux poncif C vs C++ (je n'ai d'ailleurs pas dit que le C++ était plus performant que le C, j'ai dit que je trouvais plus intéressant de résoudre ce probleme en C++, mais pas pour l'algorithme en lui meme, dont je me contrefous comme de ma premiere chemise, mais uniquement pour les techniques de programmation utilisées), parce qu'a l'heure actuelle, on voit beaucoup de gros codes industriels programmés en C++ (d'ailleurs, on voit beaucoup de gros codes programmés en pleins de trucs en meme temps, c'est fini le temps du mono-langage)
Finalement, je ne poste pas de sources parce que j'ai pas envie de me retrouver en prison.

Cordialement.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
27 juil. 2004 à 23:53
j'ai jamais vu de remarques plus connes !!! (sauf celles postés deux fois et encore, car celles postés deux fois, ne sont pas fait exprès)
première question : A QUOI SERT UN NOMBRE PREMIER ?
seconde question : EN RELISANT TON COMMENTAIRE, TU INSULTES ERATOSTENE, ETRE MEILLEUR EN MATH QUE "LE VIEU GREC" ?
troisième : VOICI CE QUE JE LIT DANS LES INFOS QUE CPPFRANCE ME DONNE SUR TOI :
- Participation de ce membre :
Sources sur ce site :
Pas de source sur ce site

Sources déposées sur tout CodeS-SourceS :
Pas de sources déposées sur tout CodeS-SourceS


donc, peux tu vraiment juger des diférences C/C++ ?
ou alors es tu radin au point de ne pas vouloir donner "tes merveilles créés en c++" ?

Trouves tu vraiment que le C est si peu performant ?

Sais tu a quoi sert un nombre aussi petit que 10^9 ? A rien !!! un nombre premier de cet ordre de grandeur, ne servira a rien !!!

Si tu parles de cryptographie, ton pauvre petit nombre étant codé sur 32 bit est inéficace !!!

Pour la cryptographie, on fait des tests du style miler rabin, qui sont aussi "faciles" a implémenter en C qu'en C++ car on peut faire la même chose dans ces deux languages, seul l'orientation objet les diférencie !!!

On dit qu'en C++ on a une légère perte de vitesse, explique moi pourquois on devrais faire des math en c++ ?
zorg_archiviste Messages postés 7 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 29 juillet 2004
27 juil. 2004 à 23:23
Et je me complete : la stratégie utilisée est en outre, plus que discutable. Si je veux un nombre premier aux alentours de 100000000, et que j'ai demandé avant un nombre premier aux alentours de 90000000, je me retape deux fois les calculs pour peut etre les memes résultats. Pour un nombre premier petit, on s'en fout, mais pour un nombre premier grand (en supposant qu'on utilise cette méthode) c'est légèrement un peu n'importe quoi, vu que ce qui coute cher, quand on calcule, c'est le temps de calcul sur les ordinateurs.
zorg_archiviste Messages postés 7 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 29 juillet 2004
27 juil. 2004 à 23:17
Mauvaise idée de CodeS Sources de ranger les codes C et les codes C++ dans la meme catégorie, mais bref, je trouve que c'est gonflé de mettre un programme lambda en C de calcul de nombres premiers avec le crible du vieux grec, d'autant que ce bout de code était faux et que n'importe quel codeur numéricien le connait. Une vraie version C++ aurait été plus intéressante, car plus technique, et plus enrichissante pour les lecteurs. Hum. Mais c'est en buchant qu'on devient bucheron dit on souvent.
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
26 juil. 2004 à 13:48
ué c'est valable pr tous les tableaux.
*(t+i) est équivalent à t[i] (et meme à i[t] !!!! car *(t+i) est pareil que *(i+t))
a+ ;)
kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
26 juil. 2004 à 12:29
voilà l'écriture de l'itération est corrigée.
Au fait cosmobob, cette écriture est aussi valable pour les tableau dynamique de caractères ?
kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
26 juil. 2004 à 12:14
merci les gars, je teste ça et je fais une maj
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
26 juil. 2004 à 09:18
pour moi, ton erreur est dans le malloc et dans l'abcence de fonction permettant la gestion de monbre a bits... (apelés chifres dans ce cas la)...
Car dans ce cas, vous n'avez besoin de dire que n premier ou pas premier, 1 si il l'est 0 si il l'est pas...
Evidement dans ce style d'algorithme, si on prends plus de mémoire que le programme optimisé, on vas moins loin... (mais parfois plus vite)...
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
26 juil. 2004 à 01:25
ha j'ai pigé ou est ton erreur, fais gaffe c'est bete!!
t'alloues pas la bonne taille, et ce dès le début.
c'est pas malloc(size) qu'il faut faire, c'est malloc(size * sizeof(int) ) ... (t'allouais 4 fois moins que ce qu'il fallait)
le vla ton bug.

mais pour plus de lisibilité, remplace les trucs de la forme *(t+i) par t[i] (ecriture absolument equivalente (mais mieux !!!!), qui n'a rien avoir avec le fait que ca a été alloué dynamiquement ou que t etait un tableau statique.)

a+ ;)
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
26 juil. 2004 à 01:15
t[k] -> itération d'une alloc statique.
non non. itération de ce que tu veux.

tu peux faire *(t+i) si t est un tableau statique, et t[i] si t est un tableau dynamique...
kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
25 juil. 2004 à 23:30
coucou747> j'ai précisé l'enregistrement dans le fichier (relis l'explication finale), de plus c'est commenté dans la source.
kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
25 juil. 2004 à 23:28
malloc = alloc dynamique (pointeur).
Toi tu dis de remplacer par une itération avec un tableau statique :
*(t+k) -> pointeur
t[k] -> itération d'une alloc statique.

L'erreur ne vient donc pas de là...

Je vais me renseigner sur les entiers, y'a une merde quelques part c'est clair.
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
25 juil. 2004 à 23:14
bon j'ai ptet dit une connerie ! ;)
fin bon essaie de remplacer pr voir si ca plante tjrs..
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
25 juil. 2004 à 23:13
c'est normal la seg fault, *(t+(i-1)) c'est nawak ca. (addition d'un pointeur et d'un entier, mais comme t est un int* cad point vers un truc de 4 octets, *(t+i-1) correspond a t[4*(i-1) ] (arithmetique de base des pointeurs), d'ou le plantage (ca déborde sur la fin)... remplace *(t+i-1) par t[i-1] et tous les *(t+k) par t[k].
a+ ;)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 juil. 2004 à 23:05
perso, je peux aller bcp plus loin que 900, je j'ai arété mes test pour dire que le bug setrouve entre 1000 et 10000 je sais, je ne doit pas t'aider bcp...
sinon, t'aurais du dire que ça enregistrait dans un fichier (perso, si j'avais pas vu les sources, j'aurais pas remarqué... c'est tellement le bazard dans mon dosier perso...)

TY'as besoin que d'un seul bit pour ton nombre... pourquois t'essai pas de metre ton tableau en char unsigned et a mettre 8 nombres pas cases de tableau ? tu utiliserais bcp moins de mémoire
kod32 Messages postés 46 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 13 novembre 2004
25 juil. 2004 à 23:04
j'ai pas autant de soucis mémoire sous win (dev-cpp). faut que je revois ça en détails, je ferais une maj.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 juil. 2004 à 23:00
bash-2.05b$ ./a.out
Taille du tableau :
600

000 002 003 000 005 000 007 000 000 000
[...]
000 000 000 000 000 000 587 000 000 000
Segmentation fault
bash-2.05b$
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 juil. 2004 à 23:00
bash-2.05b$ ./a.out
Taille du tableau :
60

000 002 003 000 005 000 007 000 000 000
011 000 013 000 000 000 017 000 019 000
000 000 023 000 000 000 000 000 029 000
031 000 000 000 000 000 037 000 000 000
041 000 043 000 000 000 047 000 000 000
Segmentation fault
bash-2.05b$

exact, y a un gros problème de mémoire...
Rejoignez-nous