Page 1 sur 1

Pb avec le param continue

Posté : 11 août 2005, 15:00
par sacco
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

Posté : 12 août 2005, 09:50
par Elie
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 )

Posté : 12 août 2005, 10:01
par Invité
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

Posté : 12 août 2005, 16:57
par Invité
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>" ;
 	
 }	

?>