× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 Comment incrémenter x ?Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Labougie
  Posté le 02/04/2015 @ 11:04 
Aller en bas de la page 
Groupe Sécurité

Bonjour,

Je cherche à trouver les 100 premiers nombres premiers.

Certes, si je vais ici je les ai, mais je cherche à les trouver tout seul.

Mes boucles sont très simples, mais x ne s'incrémente pas à chaque tour, c'est pas glop du tout.

C'est en Java.

Mais au vu de la simplicité du code,les bons codeurs pourront facilement me lire.

Si l'on retire cette ligne

for (x = 2; count<=100 ; x++){ et la parenthèse qui lui correspond, le programme donne le bon résultat quelque soit la valeur de x

Merki

labougie



Modifié par Labougie le 02/04/2015 11:05
Publicité
ZenJP
 Posté le 02/04/2015 à 11:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Juste pour une autre idée (conscient que je ne réponds pas dans le sens de ta question)

http://www.commentcamarche.net/forum/affich-1676640-java-nombre-premier

Labougie
 Posté le 02/04/2015 à 11:20 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

ZenJp,

J'ai déjà fait cette lecture.

Mon code détermine les nombres premiers, j'ai retiré cette partie du code

int x;
do{
Terminal.ecrireStringln("Rentre un nombre \"entier\" supérieur strict à 1 :");
x = Terminal.lireInt(); // x = nbre à contrôler

} while ( x <= 1);

C'est la partie qui permet de sélectionner un nbre >1 pour savoir si premier ou pas, mon problème est maintenant de savoir comment incrémenter x pour que je puisse trouver les 100 premiers nbres premiers. C'est subtile mais je ne trouve pas comment procéder.

j'ai déplacer ceci x++; dans tout les coins, puis testé un

do {

code

} while (condition);

mais rien à faire x reste toujours = à 2 ou alors s'incrémente de 1 jusqu'à 102, mais dans cette condition ne rentre plus dans le test de premier Grrrr.

labougie



Modifié par Labougie le 02/04/2015 11:20
Anonyme
 Posté le 02/04/2015 à 11:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien

Bonjour

je n'apporte rien, juste "Bonjour Labougie"

je vois que tu persévères dans ton nouveau trip

@+

ZenJP
 Posté le 02/04/2015 à 11:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

Sur ce cas de 2, une idée ici (après test diviseur 2 indépendant de la suite du test)

https://www.labri.fr/perso/betrema/deug/poly/premiers.html

Labougie
 Posté le 02/04/2015 à 11:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Australien a écrit :

Bonjour

je n'apporte rien, juste "Bonjour Labougie"

je vois que tu persévères dans ton nouveau trip

@+

Salut Mon Ami,

Faut j'occupe ma cervelle à kek chose, sinon elle va ramolir .

Si tu trouves une idée, j'suis preneur .

labougie

Labougie
 Posté le 02/04/2015 à 11:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Zen,

Mon code donne déjà la recherche des "premiers". .

J'apprécie ta lecture. Mais comment je peuc incrémenter à chaque tour de boucle la variable X qui au départ est à 2 est donne "premier" en 3 puis 4 puis 5 etc...

Comprends tu mieux ma demande?

Si tu veux tester je peux t'expliquer comment lancer l'affaire, mais il te faudra la class Terminal

labougie

Labougie
 Posté le 02/04/2015 à 12:49 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

La réponse est en faite toute simple, et suis un boulet.

J'ai déplacé les déclarations de variables dans ma 1er boucle, du coup tout est ok.

comme ceci

labougie

public class X_Premiers_NbrePremier {

public static void main(String[] args) {

int x=2, count = 1;

Terminal.ecrireString("\n ");



do{
x++;
double imax = Math.sqrt(x); // déclaration de la valeur maximum que i prendra dans la boucle
int premier = 1; // initialisation de premier

for ( int i = 2 ; i <= imax ; i++){ // recherche de 2 à racine de x en incrementant de 1 à chaque tour


if (x % i == 0){ // contrôle du reste de la division, si reste = 0

premier = 0; // alors premier = 0

}

}



if (premier == 1){ // test de premier et en fonction affichage du résultat

count = count + 1;

Terminal.ecrireStringln("le nbre " + x + " est un nombre premier de rang " + count);

}

}while (count<=100);

}
}



Modifié par Labougie le 02/04/2015 12:49
Labougie
 Posté le 02/04/2015 à 13:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Bonjour JP,

J'ai du mal avec eux, y sont pas toujours simple à comprendre .

Mais si tu m'aides, , je relève le défi.

labougie

Ps,

Je suppose que le code en sera que + court

Publicité
Labougie
 Posté le 02/04/2015 à 13:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Merci pour cette piste, je vais regarder ce soir à tête reposé.

C'est mon heure pour le boulot .

Labougie

Labougie
 Posté le 03/04/2015 à 11:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Jp,

Tu as fais tout le boulot .

Donc le bool ici 0 ou 1 sert d'interrupteur.

Je pensais devoir faire un truc + compliqué un peu comme ce type de boucle, avec une valorisation permettant l'entrée directe dans while

boolean testReponse = false;

while (testReponse == false){
// initialisation de la boucle pour pouvoir rentrer au moins une fois dedans ''false''

..... Instructions

...........if ( n < 0 ){
.................. conditions
............. }

...... instructions

....... testReponse = false;


................... instructions

............ testReponse = true;

........instructions

.. }

labougie

Labougie
 Posté le 03/04/2015 à 12:56 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Jp,

Le pire dans tout cela, c'est que ce site est dans ma scde page d'ouverture du navigateur,,,, Shame on me

Je l'ai parcouru il y a bien longtemps déjà, faut que je m' y replonge vite pour mieux comprendre ce bon "Bool" qui est fort intéressant au demeurant.

Labougie

Labougie
 Posté le 04/04/2015 à 13:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

Jp,

Je regarde ta class, mais ne comprends pas

"Indice=3"

while (nombre&lt ;=limite) c'est quoi ce truc biztrange &lt

labougie

Labougie
 Posté le 04/04/2015 à 13:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Groupe Sécurité

je vais pouvoir maintenant mieux réaliser mon tableau de traçage.

et regarder comment fonctionne ton code

pas évident pour le < "inférieur"

labougie

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
109,99 €SSD externe portable USB 3.1 SanDisk Extreme PRO 500 Go (1050 Mo/s) à 109,99 €
Valable jusqu'au 02 Décembre

Amazon fait une promotion sur le SSD externe portable USB 3.1 SanDisk Extreme PRO 500 Go qui passe à 109,99  € alors qu'on trouve le SSD à 160 € ailleurs. Le disque SSD SanDisk Extreme Pro Portable 500 Go permet, grâce à sa connectique USB 3.1, des haute vitesse de transfert pouvant aller jusqu'à 1050 Mo/s grâce au disque NVMe qu'il contient. Sa coque robuste et certifiée IP55 (eau et poussière) protège vos données partout où vous allez. Vous ne craindrez pas de l'emporter partout avec vous grâce à sa conception robuste et résistante avec un coeur de SSD résistant aux chocs. Le logiciel SanDisk inclu SecureAccess peut crypter vos fichiers personnels. Garantie 3 ans. Interface : USB 3.1 Type A et C.


> Voir l'offre
79,99 €Casque sans fil Sony WH-CH700N Bluetooth avec réduction de bruit active à 79,99 €
Valable jusqu'au 30 Novembre

Cdiscount fait une belle vente flash sur le casque sans fil Sony WH-CH700N Bluetooth qui passe à 79,99 € livré gratuitement alors qu'on le trouve ailleurs à plus de 120 €. Ce casque sans fil rechargeable (via micro USB) offre jusqu'à 35h d'autonomie. L'AINC (Artificial Intelligence Noise Cancelling) s'adapte à votre environnement, ce qui vous permet d'éliminer les bruits indésirables lors de vos voyages ou si vous êtes avec d'autres personnes dans une même pièce. Une très bonne affaire.


> Voir l'offre
19,99 €Fire TV Stick à partir de 19,99 €
Valable jusqu'au 02 Décembre

Amazon fait une promotion sur ses nouvelles clés HDMI Amazon Fire TV Stick. La version Lite passe à 19,99 € au lieu de 29,99 € tandis que la version normale passe à 29,99 € au lieu de 39,99 €. Cette clé HDMI à brancher sur votre TV possède un processeur quadricoeur, 1 Go de RAM et 8 Go d'espace de stockage, le WiFi et le bluetooth. Avec elle, vous allez pouvoir voir facilement Prime Video, Netflix, Disney+, YouTube, Spotify sur votre TV Full HD. Cette nouvelle version 2020 est compatible Alexa.

Une télécommande est fournie avec les deux versions. La différence est que la version normale possède une télécommande améliorée (avec plus de boutons pour contrôler également la TV).

Si vous avez une TV 4K, tournez-vous vers ce modèle dédié à 39,99 € au lieu de 59,99 €.


> Voir l'offre

Sujets relatifs
comment incrémenter i en faisant i++ ?
Comment mettre un temps dans un Script
Comment exclure 0 dans une fonction
Comment éditer mes lapins en javascript
Comment coloriser les doublons et unique avec VBA
Comment lire un texte dans un zipped fichier
Comment rendre les cellules de ma JTable dans mon
Comment Récupérer un Tag sous Visual Basic 2010
Comment remplir un Jtable depuis la bd en Java
Comment mettre MISE A JOUR AUTO sur mon applicatio
Plus de sujets relatifs à Comment incrémenter x ?
 > Tous les forums > Forum Autres langages