Pb avec le param continue

Eléphant du PHP | 180 Messages

11 août 2005, 15:00

Voilà j'ai un pb dans mon code

PHP :

<?php

// cherche tous les
// nombres premiers de 1 à 1000

for ($nb=1 ;$nb<=1000 ;$nb++);

{

$div = 1;

while ($div <= $nb)
{
$reste = $nb%$div ;

if ($reste==0)
{
if ($div==$nb) break ;
//sort de la boucle while
elseif ($div!=1) continue 2 ;
}

$div++ ;

}
echo $nb. " est un nombre premier<br>" ;

}

?>

je dois avoir un pb sur la ligne du "continue" car mon code ne fonctionne pas mais je ne vois pas

Merci d'avance

Mammouth du PHP | 1339 Messages

12 août 2005, 09:50

J'avais develloppé ce code (Qui marchait je crois :p)
<?

	set_time_limit (120);									// Pour etre sur

	$base = 10000;											// Sur combien de nombres calculons-nous.

	$facteur = array('2');									// On prend 2 comme facteur de base.

	for($i=1;$i<=$base;$i++) {								// On fait la boucle des 10 000 chiffres

		for($nb=0;$nb<count($facteur);$nb++) {				// On fait la boucle des facteurs

			if(is_int($i / $facteur[$nb])) $non[$i] = 1;	// Si le chiffre retourne un entier quand
															// il est divisé par un facteur alors il 
		}													// n'est pas un nombre premier

		if((empty($non[$i])) AND ($i > 1)) {
	
			array_push($facteur, $i);						// Si c'est un nombre premier on l'ajoute
															// aux facteurs
		}

	}

	$nombre = count($facteur) + 1; 							//On ajoute le 1 qui est un nombre premier.

	echo "Il y a ".$nombre." nombres premiers entre 1 et ".$base;

?>

Code : Tout sélectionner

Il y a 169 nombres premiers entre 1 et 1000 Array ( [0] => 2 [1] => 3 [2] => 5 [3] => 7 [4] => 11 [5] => 13 [6] => 17 [7] => 19 [8] => 23 [9] => 29 [10] => 31 [11] => 37 [12] => 41 [13] => 43 [14] => 47 [15] => 53 [16] => 59 [17] => 61 [18] => 67 [19] => 71 [20] => 73 [21] => 79 [22] => 83 [23] => 89 [24] => 97 [25] => 101 [26] => 103 [27] => 107 [28] => 109 [29] => 113 [30] => 127 [31] => 131 [32] => 137 [33] => 139 [34] => 149 [35] => 151 [36] => 157 [37] => 163 [38] => 167 [39] => 173 [40] => 179 [41] => 181 [42] => 191 [43] => 193 [44] => 197 [45] => 199 [46] => 211 [47] => 223 [48] => 227 [49] => 229 [50] => 233 [51] => 239 [52] => 241 [53] => 251 [54] => 257 [55] => 263 [56] => 269 [57] => 271 [58] => 277 [59] => 281 [60] => 283 [61] => 293 [62] => 307 [63] => 311 [64] => 313 [65] => 317 [66] => 331 [67] => 337 [68] => 347 [69] => 349 [70] => 353 [71] => 359 [72] => 367 [73] => 373 [74] => 379 [75] => 383 [76] => 389 [77] => 397 [78] => 401 [79] => 409 [80] => 419 [81] => 421 [82] => 431 [83] => 433 [84] => 439 [85] => 443 [86] => 449 [87] => 457 [88] => 461 [89] => 463 [90] => 467 [91] => 479 [92] => 487 [93] => 491 [94] => 499 [95] => 503 [96] => 509 [97] => 521 [98] => 523 [99] => 541 [100] => 547 [101] => 557 [102] => 563 [103] => 569 [104] => 571 [105] => 577 [106] => 587 [107] => 593 [108] => 599 [109] => 601 [110] => 607 [111] => 613 [112] => 617 [113] => 619 [114] => 631 [115] => 641 [116] => 643 [117] => 647 [118] => 653 [119] => 659 [120] => 661 [121] => 673 [122] => 677 [123] => 683 [124] => 691 [125] => 701 [126] => 709 [127] => 719 [128] => 727 [129] => 733 [130] => 739 [131] => 743 [132] => 751 [133] => 757 [134] => 761 [135] => 769 [136] => 773 [137] => 787 [138] => 797 [139] => 809 [140] => 811 [141] => 821 [142] => 823 [143] => 827 [144] => 829 [145] => 839 [146] => 853 [147] => 857 [148] => 859 [149] => 863 [150] => 877 [151] => 881 [152] => 883 [153] => 887 [154] => 907 [155] => 911 [156] => 919 [157] => 929 [158] => 937 [159] => 941 [160] => 947 [161] => 953 [162] => 967 [163] => 971 [164] => 977 [165] => 983 [166] => 991 [167] => 997 )
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Invité
Invité n'ayant pas de compte PHPfrance

12 août 2005, 10:01

Merci mais le but premier de ma question est de savoir pourquoi le "continue" me met une erreur enmode débug. Car normalement le script est bon et dois me renvoyer tous les nbres premiers .

Donc ou est la faute??

Merci d'avance

Invité
Invité n'ayant pas de compte PHPfrance

12 août 2005, 16:57

J'ai trouvé une simple faute de syntaxe un ";" en trop derrière le for


<?php

// cherche tous les
// nombres premiers de 1 à 1000

 for ($nb=1 ;$nb<=1000 ;$nb++)
 
 {
 	
 	$div = 1;  //test 1
 	
 	while ($div <= $nb) 
 	{
 		$reste = $nb%$div ;
 		
 		if ($reste==0)
 		{
 			if ($div==$nb) break ;
 			//sort de la boucle while
 			elseif ($div!=1)  continue 2; 
 		}
 			
 	 $div++;				
 					
 	}
 	echo $nb. " est un nombre premier <br>" ;
 	
 }	

?>