RECHERCHE DES NOMBRES CHANCEUX SELON STANISLAW ULAM

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 27 nov. 2006 à 21:47
Gueftones Messages postés 2 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 30 novembre 2006 - 30 nov. 2006 à 17:54
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/40495-recherche-des-nombres-chanceux-selon-stanislaw-ulam

Gueftones Messages postés 2 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 30 novembre 2006
30 nov. 2006 à 17:54
Voilà, j'ai fait quelques modifs, indiquées ci-dessus.
Pour les indices, ok pour commencer l'affichage à partir de 1, mais je préfère initialiser le tableau à partir de 0, c'est plus clair et propore.
J'obtiens cette liste avec 300 pour limite :
1 3 7 9 13 15 21 25 31 33 37 43 49 51 63 67 69 73 75 79 87 93 99 105 111 115 127 129 133 135 141 151 159 163 169 171 189 193 195 201 205 211 219 223 231 235 237 241 259 261 267 273 283 285 289 297

Et pour Necronomicon, oui oui t'inquiètes pas, j'ai bien fait mon travail :)
cs_Necronomicon Messages postés 1 Date d'inscription samedi 10 juin 2006 Statut Membre Dernière intervention 30 novembre 2006
30 nov. 2006 à 09:24
Dans le traitement de la première étape, tu peux mettre ton i=2, et dans l'affichage (qui serait plus "clair" avec du setw) tu commence à 1.

Sinon tu pourrais nous dire ce que ça te donne jusqu'à 200/300 histoire qu'on vérifie la pratique. ;) (Normalement tu as dû mettre tes résultats dans un .txt en utilisant une commande shell non ? :) )
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
28 nov. 2006 à 00:49
tab[i] = i & 1;
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
28 nov. 2006 à 00:34
while (tmp = prochainVrai(tab,tmp))
{
//tmp contient déja la bonne valeur
Gueftones Messages postés 2 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 30 novembre 2006
27 nov. 2006 à 23:37
Merci pour les corrections, j'ai modifié ce que j'ai pu. Pour le reste, je ne vois pas comment ne pas appeler 2 fois prochainVrai(tab,tmp).
Quant à l'utilisation d'un tableau statique, je n'ai pas le temps ce soir, je ferai ça demain.

Sinon, je ne pense pas non plus que les nombres chanceux aient une grande utilité, mais j'avais à faire un programme permettant de résoudre ce problème et ça m'a un peu posé problème... Et puisqu'aucune autre source à ce sujet n'a été publiée ici, je pense que ma version pourra peut-être servir à quelqu'un, voilà tout.
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
27 nov. 2006 à 23:08
J'ai pas osé le demander...
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 nov. 2006 à 23:03
Reste a savoir a quoi servent ces nombres chanceux
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 nov. 2006 à 23:01
Quelques remarques:

while (prochainVrai(tab,tmp) != 0)
{
tmp=prochainVrai(tab,tmp);
Tu appelles deux fois prochainVrai(tab,tmp), c'est inutile

(i%2==0) ? tab[i]=false : tab[i]=true;
Autant mettre tab[i] = i%2;

Dans le test: if ( tab[i] == true )
Tu peux enlever le ==true, ca simplifie l'écriture
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
27 nov. 2006 à 21:47
Pas d'iterator, pas de push_back()...
Le vector ici n'est pas utile puisque pas dynamique.
(bool bTab[lim+1];) suffit.
Sinon le principe est bien.
Rejoignez-nous