1 seul fois

Résolu
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 8 oct. 2006 à 16:49
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 9 oct. 2006 à 17:34
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

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
8 oct. 2006 à 17:02
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
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
8 oct. 2006 à 17:02
Essaye ceci :

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