Como faço pra puxa valores?

5 respostas
F
Galera tenho esses 3 metodos abaixo....e por exemplo o metodo Sigma depende das listas da Decomposição Canonica, pra poder fazer o calculo... Não faço ideia se estou fazendo certo, mas acho que a merda ta no fp = Decomposição...(n,Primo,Fator); Segue as codificações:
public int DecomposicaoFatoresPrimos(int n, int Primo[], int Fator[])  
{

 int fp = 0;   
 
 
 Fator[fp] = 0;                      
  
 for (int i=0; Primos[i] <= (int)Math.sqrt(n);i++) {
      Fator[fp] = 0;                  
      while (n % Primos[i] == 0 ) {   
             Fator[fp]++;           
             n /= Primos[i];          
            } 
      if (Fator[fp] > 0) {          
          Primo[fp++] = Primos[i];    
         } 
     }
       
 if (n != 1) {                      
     Primo[fp] = n;               
     Fator[fp] = 1;                   
     fp++;                          
    } 
 
 return fp; 

} 




public int Sigma(int n) 
{
	int Primo[] = new int[50];
	int Fator[] = new int[50];
	int soma=0, fp;
	
	fp = DecomposicaoFatoresPrimos(n,Primo,Fator);
	
	for(int i=0;i==n;i++){
		soma=soma + (Potencia(Primo[i],(Fator[i]+1))-1)/(Primo[i] -1);
	}
	return soma;

}



public int Potencia(int x, int n)  
{

 int pot;

 for (pot = 1; n > 0; n--) pot *= x;
 
 return pot; 

}

Bom acho que nao fui claro, funciona assim... usuario digita um numero em Sigma... só que a função Sigma depende da Decomposição, entao com o mesmo numero digitado, queria que o metodo decomposição fizesse a decomposição, e mandasse a lista Primo e a lista Fator para o metodo Sigma. e com essas listas o sigma podesse continuar o curso normal do algoritmo

5 Respostas

F

Tão dificil assim puxar um array de um metodo pra outror assim?

W

Nao sei se resolve o seu problema mas uma solucao pedreira sera definir o set int[] Primo e Factor como publicos, assim eles ficariam acessiveis no metodo Sigma depois de ser populado pelo metodo DecomposicaoFatoresPrimos.

//Daniel

F

Não entendi…
A linha public int DecomposicaoFatoresPrimos(int n, int Primo[], int Fator[]), já nao define tudo como publico?
ou apenas o resultado???

W

Tipo assim :

public class Teste {

        // Estas variaveis vao ficar visiveis em todos os metodos da classe.
	int Primo[] = new int[50];
	int Fator[] = new int[50];
	int Primos[] = new int[5];
	
	public Teste() {
		
		// Aqui vc chama o metodo que popula o array Primos.
		// Aqui vc chama sigma.	
				
	}
	

        // Eu mudei a assinatura desse metodo porque como as arrays Primo e Factor estao definidos
       // no comeco do programa vc nao precisa mais passar eles pra esse metodo.

	public int DecomposicaoFatoresPrimos(int n) {

	 int fp = 0;   
	 	 
	 Fator[fp] = 0;                      
	  
	 for (int i=0; Primos[i] <= (int)Math.sqrt(n);i++) {
	      Fator[fp] = 0;                  
	      while (n % Primos[i] == 0 ) {   
	             Fator[fp]++;           
	             n /= Primos[i];          
	            } 
	      if (Fator[fp] > 0) {          
	          Primo[fp++] = Primos[i];    
	         } 
	     }
	       
	 	if (n != 1) {                      
	 		Primo[fp] = n;               
	 		Fator[fp] = 1;                   
	 		fp++;                          
	 	} 
	 
	 	return fp; 

	} 

	public int Sigma(int n)	{
		
		int soma=0;
		
		int fp = DecomposicaoFatoresPrimos(n);
		
		for(int i=0;i==n;i++){
			soma=soma + (Potencia(Primo[i],(Fator[i]+1))-1)/(Primo[i] -1);
		}
		return soma;

	}



	public int Potencia(int x, int n) {

	 int pot;

	 for (pot = 1; n > 0; n--) pot *= x;
	 
	 return pot; 

	}
	
	public static void main(String[] args) { 
		
		new Teste();	
		
	}
	

}
F

Cara, eu tentei fazer isso…deixar as listas como variavel global, igualzinho vc fez, mas mesmo assim nao vem…
parecee que o “n” digitado em Signa não passa pelo decomposição =/

Criado 21 de maio de 2008
Ultima resposta 23 de mai. de 2008
Respostas 5
Participantes 2