Oi gente, tudo bem?
Sou nova por aqui, mas já chego com um problema!
Tenho que criar uma classe que receba vários números em um vetor e no final devo apresentar os números primos que antecedem cada um dos números digitados…!
Até onde cheguei:
[color=blue]import javax.swing.*;
class Primos
{
public static void main (String args[])
{
int num = Integer.parseInt(JOptionPane.showInputDialog(null, “Digite o numero de elementos que o vetor possuira:”);
int vetor[] = new int[num];
for (int i=0; i<=num; i++)
{
int vetor = Integer.parseInt [/color] 8O :?: Deu branco…!
Alguém consegue me ajudar please? Fico aguardando…
Brigada…
Primeiro convém fazeres um método que teste os números e retorne algo a dizer se são ou não primos. Por exemplo:
public static boolean isPrime(long n) {
boolean prime = true;
for (long i = 3; i <= Math.sqrt(n); i += 2)
if (n % i == 0) {
prime = false;
break;
}
if (( n%2 !=0 && prime && n > 2) || n == 2) {
return true;
} else {
return false;
}
}
Este método retorna true quando o número é primo.
Depois é aplicá-lo no teu código.
Exemplo:
//...
String s =""; //Este objecto String vai armazenar os números primos.
int [] números = new int[5]; //São introduzidos 5 números por exemplo
for (int i=0; i<5,i++) {
if (numeros[i].isPrime == true) {
s=s+numeros[i]+", ";
}
i++;
}
System.out.println(s);
//...
Espero que isto te seja útil 
Cumprimentos.
[b]Opa, acredito que ajudou sim…
Vou ver se consigo testar quando sair do trampo.
A única duvidazinha é onde colocar para mostrar todos os números primos até cada número digitado…
Tks :!:
Se alguém mais quiser responder, é sempre bom aprimorarmos os códigos![/b]
Hum…
[quote A única duvidazinha é onde colocar para mostrar todos os números primos até cada número digitado…[/quote]
Dá um exemplo concreto para eu entender melhor. Estou a fazer confusão neste momento lol.
Beleza…
Um exemplo:
O programa mostra através do JOptionPane:
“Digite a quantidade de elementos que o vetor possuirá:”
//Aí ele atribui o valor digitado acima para a variável e assim poderei determinar o tamanho do vetor.
O programa mostra através do JOptionPane:
“Digite o valor da posição ‘x’:”
//aqui eu insiro os valores de cada elemento do vetor, certo?
Agora eu preciso fazer, através do uso de estruturas de controle, um código que mostre os números primos existentes que ANTECEDEM cada um dos valores digitados para o vetor, como no exemplo abaixo:
Suponhamos que o usuário definiu que o vetor terá 3 elementos e digita 3 números para as posições: 4, 5 e 6.
Assim eu preciso mostrar
Primos que antecedem o número 4: 1, 2, 3
Primos que antecedem o número 5: 1, 2, 3
Primos que antecedem o número 6: 1, 2, 3, 5
Deu pra entender melhor?
Tem como ajudar? hehe… é que eu não tenho eclipse aqui em casa… só no note do meu namorado…!
Vlw!
Ah já compreendi o objectivo da aplicação. Bem para isso podes usar um encadeamento de for()
O primeiro for é para percorrer o vector e o for que está dentro serve para decrementar cada elemento do vector ao mesmo tempo que testa e guarda numa String todos os primos. Neste momento não estou em casa não posso produzir um código que te seja útil.
Mas é algo como isto:
static String resultado="";
//..
int vector[] = new int[4];
vector = {3,4,5};
for(int i =0,i<4,i++) {
for(int i2=i, i2<vector[i2],i2++) {
if(vector[i2].isPrime())
resultado=+vector[i2]+",";
}
System.out.println(resultado);
}
Este códgo não é de todo muito funcional para o teu caso, precisa de muitas melhorias mas serve como bom exemplo da estrutura que vais ter que te guiar, encadeamento de for().
Cumprimentos
>
[b]Oi pessoal!
Gostaria de agradecê-los…!
:)[/b]