J'essaie d'obtenir mon programme de trouver si un numéro est prime s'il ne répertorie pas ce que le numéro est divisible par actuellement, quand j'entre 62 Les sorties p> 62 sont divisibles par 2, 31. P> mais lorsque je tente de modifier la déclaration IF (i <3) que ce qu'il va gâcher avec d'autres impressions telles que l'essai 468 Il s'agira d'imprimer p> 468 est divisible par 2, 313. P> p>
3 Réponses :
La voie de l'impression était le problème. Il a trouvé J'ai modifié la pièce lorsque le numéro n'est pas un premier: p> 2 code> et imprimé 2, code>. Il a trouvé 3 code> et imprimé 3 code>, puis il a trouvé 13 code> comme dernier diviseur. À partir de celui-ci, vous avez 2, 313 code> comme sortie.
Le code affiché, essaie d'abord le nombre donné contre chaque nombre à lui-même, en comptant le nombre de diviseurs, uniquement pour déterminer s'il est prime. Si ce n'est pas le cas, alors il (avec beaucoup de chiffres magiques) recalcule ces facteurs et essaie de les imprimer comme demandé.
Il serait plus facile de calculer les nombres premiers (une fois) et la liste des facteurs en premier, en les stockant dans Certaines tableaux et génèrent uniquement la sortie souhaitée. p>
Vous pouvez produire la même sortie tout en calculant chaque facteur en maintenant au moins une piste du nombre de facteurs déjà imprimés, le cas échéant. P>
Dans ce cas, je changerais l'algorithme en quelque chose comme ça p> testtable ici . p> p>
Le code proposé suivant:
et maintenant, le code proposé: p> Les exécutions suivantes sont avec les valeurs fournies par OP P>
Pourquoi avez-vous choisi une telle solution étrange? Vous pouvez le résoudre à l'intérieur du premier
pour code> boucle. Si le reste est nul, imprimez le diviseur.Le bloc de code actuel:
printf ("Entrez un entier compris entre 1 et 1000 (inclus): \ n"); scanf ("% d", & n); Si (n> 1000 || n <0) {printf ("Vous devez entrer un nombre compris entre 1 et 1000 (inclus). \ n"); } code> est très compliqué et donne à l'utilisateur qu'une seule chance de bien réussir. Suggérer:do {printf ("entrez un entier compris entre 1 et 1000 (inclus): \ n"); scanf ("% d", & n); tandis que (n> 1000 || n <0); code>Remarque: donné
n code> le numéro maximum à vérifier estsqrt (n) code>