[code]
import javax.swing.DefaultListModel;
public class TestaDivisores {
public static void main(String[] raghy) {
int c=0;
int z=0;// variavel do modeldivisores
int j1=90; //valor de teste…
boolean continua=true; //variavel do while…
int n=1, n2, contPrimo;
float r=0;
int x=0; //marca o valor da array contador…
int contador[]= new int[1000];
int divisor[]= new int[1000];
int divisores[]= new int[1000];
//nao usado ainda
int h=0;//h é o valor do array divisores, que é, quais sao os divisores.
//+"e o divisor é "+n
//testando com model… esta é a lista dos numeros primos que fatoraram…
DefaultListModel model = new DefaultListModel();
//esta é a lista dos divisores…
DefaultListModel modelDivisores = new DefaultListModel();
//ou arraylist dos divisores, em teste.
//ArrayList modelo1 = new ArrayList();
int v=0;
int j=0;//do for dos divisores.
System.out.println(“j1=valor:”+j1+“valor de n=: 2”);
while(continua==true){
if(j1%2==0){
j1=j1/2;
System.out.println(“j1=valor:”+j1+“valor de n=2”);
contador[x]=contador[x]+1;
divisor[x]=2; }
else {continua=false;}
if (j1==1){continua=false; //contador[x]–;
}
}
System.out.println(“contador=”+contador[x]);
while(n < 1000){
n2=n-1;
for(contPrimo = n2; contPrimo >= 2; contPrimo=contPrimo-1){
r = n % contPrimo;
if(r == 0){
System.out.println(“O numero “+n+” não é primo!”);
contPrimo=1;
}
}
if(r!=0){
System.out.println(“O numero “+n+” é primo!”);
//se é primo, posso usar meu metodo…
continua=true;
while(continua==true)
{
if (j1%n==0) {x=x+1; contador[x]=contador[x]+1; divisor[x]=n;j1=j1/n;
System.out.println(“j1=valor:”+j1+"valor de n=: “+n);
System.out.println(“contador[”+x+”] tem valor: "+contador[x]+"e o divisor é "+n);
if (j1==1){continua=false; n=1001; }
}
else {continua=false; }
}
}
n++;
}
// terminou o while.
for (int g=0;g<(x+1);g++){
System.out.println(“contador[”+g+"] tem valor: “+contador[g]+” divisor["+g+"] tem valor: "+divisor[g]);
} //so informa o que ocorreu acima…
for (int g=0;g<(x+1);g++){
divisores[h]=divisor[g]*1;
//este for é para a posição no model…
for (j=0; j<contador[g];j++) {
model.add(j,divisor[g]);
System.out.println(“divisores[”+g+"]"+divisores[h]);
}
}//for}
System.out.println(“model”+model.size());
int ultimo2=model.size()-1;
int ultimo=(Integer.parseInt(""+model.size() ) );
System.out.println(“ultimo”+ultimo);
modelDivisores.add(c,1);
//primeiro divisor por um…
int conta=(Integer.parseInt(""+model.getElementAt( ultimo2 ) ) );
conta=conta*1;
modelDivisores.add(c,conta);
//segundo numero
int conta2=(Integer.parseInt(""+model.getElementAt( ultimo2 -1 ) ) );
int resultado2=conta21;
int resultado22=conta2conta;
//adiciona do segundo número
c=c+1;
modelDivisores.add(c,resultado2);
c=c+1;
modelDivisores.add(c,resultado22);
//terceiro numero…
int conta3=(Integer.parseInt(""+model.getElementAt( ultimo2 -2 ) ) );
int resultado3=conta31;
int resultado31=conta3conta;
int resultado33=conta3resultado2;
int resultado333=conta3resultado22;
//adiciona resultado
c=c+1;
modelDivisores.add(c,resultado3);
c=c+1;
modelDivisores.add(c,resultado31);
c=c+1;
modelDivisores.add(c,resultado33);
c=c+1;
modelDivisores.add(c,resultado333);
//quarto numero…
int conta4=(Integer.parseInt(""+model.getElementAt( ultimo2 -3 ) ) );
int resultado4=conta4*1;
int resultado42=conta4*conta;
int resultado44=conta4resultado2;
int resultado45=conta4resultado22;
int resultado445=conta4resultado3;
int resultado446=conta4resultado31;
int resultado4444=conta4resultado33;
int resultado4445=conta4resultado333;
//adiciona resultado
c=c+1;
modelDivisores.add(c,resultado4);
c=c+1;
modelDivisores.add(c,resultado42);
c=c+1;
modelDivisores.add(c,resultado44);
c=c+1;
modelDivisores.add(c,resultado45);
c=c+1;
modelDivisores.add(c,resultado445);
c=c+1;
modelDivisores.add(c,resultado446);
c=c+1;
modelDivisores.add(c,resultado4444);
c=c+1;
modelDivisores.add(c,resultado4445);
//quinto numero… tentar automatizar isto… tem que saber quando parou a divisao… automaticamente…
/* /if (model.size()>)
int conta5=(Integer.parseInt(""+model.getElementAt( ultimo2 -4 ) ) );
int resultado5=conta51;
int resultado52=conta5conta;
int resultado55=conta5resultado2;
int resultado56=conta5resultado22;
int resultado555=conta5resultado3;
int resultado556=conta5resultado31;
int resultado5555=conta5resultado33;
int resultado5556=conta5resultado333;
int resultado557=conta5resultado4;
int resultado558=conta5resultado42;
int resultado559=conta5resultado44;
int resultado560=conta5resultado45;
int resultado561=conta5resultado445;
int resultado562=conta5resultado446;
int resultado563=conta5resultado4444;
int resultado564=conta5resultado4445;
//adiciona resultado
c=c+1;
modelDivisores.add(c,resultado5);
c=c+1;
modelDivisores.add(c,resultado52);
c=c+1;
modelDivisores.add(c,resultado55);
c=c+1;
modelDivisores.add(c,resultado56);
c=c+1;
modelDivisores.add(c,resultado555);
c=c+1;
modelDivisores.add(c,resultado556);
c=c+1;
modelDivisores.add(c,resultado5555);
c=c+1;
modelDivisores.add(c,resultado5556);
*/ //System.out.println(“conta2 tamanho”+conta22.size()-1 );
System.out.println(“conta:”+conta);
System.out.println(“conta2:”+conta2);
System.out.println(“conta3:”+conta3);
System.out.println(“conta4:”+conta4);
//System.out.println(“conta5:”+conta5);
System.out.println(“divisores[”+modelDivisores);
}//main
}[/code]
isto aí é o que tenho feito. ainda estou pensando mas mando, para ver o que acontece. ainda não esgotei minha busca, mas já tá aí.
opniões do jar acima? valeu.