Desenvolvendo matematica (programa)

:shock:

opa estou desenvolvendo um programa chamado matematica java, muito interessante, na fatoração, surgiram questões relacionadas aos números primos. ou seja estava fazendo um por um, mas vi que precisava de algo mais automatico. Acho que até obtive êxito.
(no momento tirei todo o avanço, nao fatora nada neste jar)

Em todo caso, para calcular o mdc, ou o numero de divisores, ou ainda quais são estes divisores, estou precisando multiplicar arrays, o que tem dado certo trabalho… divido aqui o andamento do projeto, qualquer solução acrescentará. no momento, estou sem saber ao certo por onde continua-lo, porém vale o estudo… bem está em andamento, resolvi postar futuramente o código, pois está bagunçado. :oops: :lol: segue o jar do matemática talvez, no momento.
:roll:

queria multiplicar arrays, o primeiro nome, por todos os outros do array, e depois o segundo por todos os outros, servírá para calcular os divisores de um número, o primeiro array são os numeros fatorados e os outros de fatos são um array que se cria ao multiplica-los por um, e pelo numero fatorado acima… pensando no assunto… alguem conhece algo assim em java, para calcular divisores, fatorar, equações de 1 e 2 grau… ( o meu gráfico da equação de segundo grau, não chega ao vértice (ainda) ). :stuck_out_tongue:

não entendi bem, mas os divisores e primos não é tão complicado achar:

ArrayList<Integer> divisores = new ArrayList<Integer>(); // a collection que preferir for (int i = 1; i <= numero; i ++) { if (numero % i == 0) { divisores.add(i); } } // pronto, a collection tem todos os divisores desse número. se tiver somente dois itens (1 e ele mesmo), é primo (vale pra sua fatoração)

opa obrigado. certo vou tentar postar o codigo bagunçado mesmo na sequencia, pois estou em outro computador agora.
viu o jar? o que achou até então?

a fatoração já consegui, é que para calcular os divisores deste número, vou precisar multiplicar, na internet ao digitar divisores de um numero, achamos a formula. os fatorados, pelos seus resultados… é a formula… o número eu já consegui fazer

(por um método de somar mais um aos fatorados, quem conhece, sabe)

o mmc, também ficou fácil, pois depende só dos fatorados,
mas já no mdc, vou ter que fazer separadamente por número, e ver os iguais (uma maneira) .

[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=conta2
conta;
//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=conta3
conta;
int resultado33=conta3resultado2;
int resultado333=conta3
resultado22;
//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=conta4
resultado22;

int resultado445=conta4resultado3;
int resultado446=conta4
resultado31;
int resultado4444=conta4resultado33;
int resultado4445=conta4
resultado333;
//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=conta5
conta;
int resultado55=conta5resultado2;
int resultado56=conta5
resultado22;
int resultado555=conta5resultado3;
int resultado556=conta5
resultado31;
int resultado5555=conta5resultado33;
int resultado5556=conta5
resultado333;
int resultado557=conta5resultado4;
int resultado558=conta5
resultado42;
int resultado559=conta5resultado44;
int resultado560=conta5
resultado45;
int resultado561=conta5resultado445;
int resultado562=conta5
resultado446;
int resultado563=conta5resultado4444;
int resultado564=conta5
resultado4445;
//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.