| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
kennylafougere
Inscrit le: 30 Oct 2007 Messages: 37
|
Posté le: Lun Fév 25, 2008 1:39 pm |
Sujet du message: pb de php avec boucle for
|
|
salut a tous
bon sa arrive meme aux meilleurs ^^
je suis bloqué sur un challenge de prog hackquest par une pauvre boucle for :
for($a=3;$a<=(sqrt($p)+1);$a+2){
}
voila le pb est que $a ne s incremente pas et reste a 3 ce qui fait que je tourne en rond dans ma boucle
si quelqu un trouve se qui cloche sa m aiderai beaucoup
merci d avance |
|
| Revenir en haut |
|
 |
HacKSpideR

Inscrit le: 19 Juin 2007 Messages: 37
|
Posté le: Lun Fév 25, 2008 6:14 pm |
Sujet du message:
|
|
J'ai quelque base en php
mais sa ne serai pas sa ? :
for($a=3;$a<=(sqrt($p)+1);$a+=2){
} |
|
| Revenir en haut |
|
 |
Peel
Inscrit le: 26 Fév 2008 Messages: 23
|
Posté le: Mar Fév 26, 2008 9:13 am |
Sujet du message:
|
|
si c'est ca.
Soit $a+=2
ou alors $a = $a+2
C'est la meme chose. |
|
| Revenir en haut |
|
 |
kennylafougere
Inscrit le: 30 Oct 2007 Messages: 37
|
Posté le: Mar Fév 26, 2008 10:49 am |
Sujet du message:
|
|
| ouai entre temps j ai essayé cette forme aussi mais sa change rien |
|
| Revenir en haut |
|
 |
Peel
Inscrit le: 26 Fév 2008 Messages: 23
|
Posté le: Mar Fév 26, 2008 11:02 am |
Sujet du message:
|
|
| Je vais allez faire un tour dans le challenge pour voir le contexte !! |
|
| Revenir en haut |
|
 |
Peel
Inscrit le: 26 Fév 2008 Messages: 23
|
Posté le: Mar Fév 26, 2008 11:06 am |
Sujet du message:
|
|
Je le trouve pas, tu pourrais mettre un peu le code que tu as autour
Surtout à koi est égal $p
Mais faut bien mettre ca : for($a=3;$a<=(sqrt($p)+1);$a+=2)
ton problème doit venir de $a<=(sqrt($p)+1)
tu sais au moins ce ke ca veu dire ? |
|
| Revenir en haut |
|
 |
kennylafougere
Inscrit le: 30 Oct 2007 Messages: 37
|
Posté le: Mer Fév 27, 2008 7:12 am |
Sujet du message:
|
|
donc le nom du challenge : primal fear
mon but etant de faire un genre de brute force pour les nombres premiers
voice un peu plus de code :
$nombres=array(2,3);
$limit=100;
for($p=5;$p<$limit;$p+=2){
$nbprem="true";
for($a=3;$a<=(sqrt($p)+1);$a+=2){
if(($p%$a)==0){
$nbprem="false";
}
}
if($nbprem=="true"){
$nombres[]=$p;
}
} |
|
| Revenir en haut |
|
 |
kennylafougere
Inscrit le: 30 Oct 2007 Messages: 37
|
Posté le: Mer Fév 27, 2008 7:24 am |
Sujet du message:
|
|
bon bah apparament ça remarche
merci tout le monde |
|
| Revenir en haut |
|
 |
Peel
Inscrit le: 26 Fév 2008 Messages: 23
|
Posté le: Mer Fév 27, 2008 8:10 am |
Sujet du message:
|
|
| J'ai pas trop chercher à comprendre vu que ca marche mais tu met une limite pour les nombre premier ?? Pourquoi ca ? |
|
| Revenir en haut |
|
 |
Apophis1988
Inscrit le: 05 Aoû 2007 Messages: 69
|
Posté le: Mer Fév 27, 2008 8:34 pm |
Sujet du message:
|
|
| Peel a écrit: | | J'ai pas trop chercher à comprendre vu que ca marche mais tu met une limite pour les nombre premier ?? Pourquoi ca ? |
Parce qu'il veut s'arreter aux nombres premiers avant 100.
Mis à part ça, ton algorithme me parait tres douteux pour trouver des nombres premiers et de plus il me semble que t'as une accolade fermante en trop. |
|
| Revenir en haut |
|
 |
Peel
Inscrit le: 26 Fév 2008 Messages: 23
|
Posté le: Jeu Fév 28, 2008 8:27 am |
Sujet du message:
|
|
| Citation: | | Parce qu'il veut s'arreter aux nombres premiers avant 100. |
Justement, je ne vois pas d'intérêt à limité la recherche des nombre premier !!
Par exemple, 12347
Ben c'est un nombre premier ce qui veu dire que s'il tombe sur ce nombre ben il ne passe pas dutout dans sa boucle |
|
| Revenir en haut |
|
 |
Apophis1988
Inscrit le: 05 Aoû 2007 Messages: 69
|
Posté le: Jeu Fév 28, 2008 3:50 pm |
Sujet du message:
|
|
Je n'ai absolument pas regardé le challenge et donc je pense que s'il s'arrete avant 100, c'est qu'il ne veut que les nombres premiers entre 0 et 100, tu crois pas?
Ensuite, pour ton nombre premier il n'y aucune crainte car il n'y arrivera jamais à ce nombre: la boucle principale s'arretant justement à 100 |
|
| Revenir en haut |
|
 |
Celelibi

Inscrit le: 29 Mar 2006 Messages: 770
|
Posté le: Jeu Fév 28, 2008 5:07 pm |
Sujet du message:
|
|
Si le but est d'utiliser les nombres premiers trouvés pour en faire autre chose, on trouve facilement sur le net des listes des nombres premiers.
Si le but est de coder un prog qui les trouve, tu peux t'essayer au crible d'Erathostène qui est assez sympa à programmer. Il présente la meilleur complexité en temps, mais consomme de un espace mémoire en O(n). Ou alors tu peux simplement optimiser ton algo actuel en ne testant la divisibilité que par les nombres premiers actuellement trouvés.
Et puis si y'a des constantes false et true, c'est pas pour utiliser des chaines de caractères qui dans un test valent true.  _________________ Il y a un boulet qui sommeille en chacun de nous. (enfin, surtout vous...) |
|
| Revenir en haut |
|
 |
kennylafougere
Inscrit le: 30 Oct 2007 Messages: 37
|
Posté le: Ven Fév 29, 2008 7:45 am |
Sujet du message:
|
|
bon je vois que sa passionne plein de monde alors voici l enoncé :
Ok get pen and paper.. and do the following....
If you click this here you will receive a number.
1. Calculate all prime numbers counting down from and including this number.
2. Throw away every second prime you get.
3. Take the first digit and the last digit of all the prime numbers left, add them all together.
4. You will get a large number. Factorize that number to primes and add up all the factors.
5. Send it the answer in the format: 'Prime:AddedDigits:AddedFactors'
Example: Number = 17
1. Primes: 17 13 11 7 5 3 2
2. Primes: 17 11 5 2
3. 1+7 + 1+1 + 5+5 + 2+2 = 24
4. 24 (Not that large ) = 12 x 2 = 6 x 2 x 2 = 3 x 2 x 2 x 2 -> 3+2+2+2 = 9
5. Answer: 17:24:9
Another example: 31337:13289:234
donc je pensait faire un brute force qui calcul toutes les possibilitées pr les stocker dans un .txt et ensuite un autre prog qui se connecte au challenge et va direct chercher la reponse dans le txt
sachant que leur question est la plus part du temps un chiffre qui tourne autour de 8 000 000 |
|
| Revenir en haut |
|
 |
Peel
Inscrit le: 26 Fév 2008 Messages: 23
|
Posté le: Ven Fév 29, 2008 10:34 am |
Sujet du message:
|
|
ou alors tu fait simplement une recherche qui est pas en PHP car tu va faire ralentir tous les serveur et pour probablement ce terminer par une erreur execution_time
Fait le plutot en VB !! |
|
| Revenir en haut |
|
 |
|