1 seul fois

Résolu
Signaler
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
-
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
-
Bonjour a tous.
je voudrais que mon programme apelle une methode ("nbPremier(int n)") mais qu'une seul fois de maniere a eviter de perdre du temps (plusieur minutes) car la valeur de n est de 100000.

public void CmdValider_actionPerformed(ActionEvent e) {
                Vector V = nbPremier(100000);
                  //utilisation de V
}

public Vector nbPremier(int n){
        Vector v = new Vector();
        for(int N=2;N<=n;N++){
            v.addElement(new Integer(N));
        }
        int i=2, j=0;
        while(i<=n){
            j=i*2;
            while(j<=n){
                v.remove(new Integer(j));
                j+=i;
            }
            i++;
            while (i<=n && !v.contains(new Integer(i))) i++;
        }
        v.trimToSize();
        return v;
    }

class Cadre_ABC_CmdValider_actionAdapter implements
        ActionListener {
    private Cadre_ABC adaptee;
    Cadre_ABC_CmdValider_actionAdapter(
            Cadre_ABC adaptee) {
        this.adaptee = adaptee;
    }



    public void actionPerformed(ActionEvent e) {
        adaptee.CmdValider_actionPerformed(e);
    }
}


je pense que vous l'aurez compris, a chaque clic sur le bouton CmdValider, la methode nbPremier est appeler, ce qui prend bcp de temps a chaque fois.
j'ai essaier plusieurs metodes mais rien n'a fonctionner (les test avec un compteur. mais le compteur se rmet a zero a chaque appelle de la methode concerner, etc.).

merci.

3 réponses

Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

pres calcule tes nombres au démarage de ton appli et non apres un clic sur un bouton.....

sinon tu tu veux le faire depuis un clic

private Vector V = null;
public void CmdValider_actionPerformed(ActionEvent e) {
                if(V == null)
                    V = nbPremier(100000);
                  //utilisation de V
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Essaye ceci :

public void CmdValider_actionPerformed(ActionEvent e) {
             Static boolean bCompteur = false;
             if (!bCompteur) {
                bCompteur = true;
                  Vector V = nbPremier(100000);
              }
}
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
2
Merci.