como fazer : qual o maior numero primo(como faça para mostrar o maior numero primo
(exemplo: 1 até 10 , o maior numero primo é 7):
meu codigo:
sou iniciante
Olá.
Segue um exemplo comentado. Espero que ajude a entender. É logico que existem n maneiras de fazer inclusive algumas mais “bonitas”, porém para fim de entendimento da logica creio que vá lhe ajudar:
packageaaparametros;importjava.util.ArrayList;publicclassAtividade{publicstaticvoidmain(String[]args){intmenorNumeroDoIntervalo=1;//aqui é onde voce vai ler o primeiro numero da sua sequenciaintmaiorNumeroDoIntervalo=100;//aqui é onde voce vai ler o ultimo numero da sua sequenciaintcontaprimo=0;//aqui temos um contador de primos para saber se o numero é primo ( divisivel somente por 1 e por ele meesmo ou nao)ArrayList<Integer>primos=newArrayList<>();//aqui é a lista onde iremos colocar todos os primos que encontrarmos//aqui vamos iterar sobre todos os numeros dentro do intervalofor(intx=menorNumeroDoIntervalo;x<=maiorNumeroDoIntervalo;x++){//aqui vamos iterar e dividir cada um dos numeros do intervalo para saber se sao primos ou naofor(inti=x;i>=menorNumeroDoIntervalo;i--){//aqui testamos o resto da divisao pra saber se dividiu ou nao. Se % retornar sobra é porque nao dividiu ,caso retorne 0 fazemos a variavel contaprimo somar 1 ao valor que ela ja contem.if(x%i==0){contaprimo++;}}//terminado o loop de testes verificamos se a variavel contaprimo é igual a 2 , se for é sinal que o numero so dividiu por 1 e por ele mesmo, logo , é um numero primoif(contaprimo==2){System.out.println(x+" = É primo");// se o valor da variavel contaprimo mostrar que o numero na variavel x que estamos avaliando é um numero primo colocamos ele em uma listaprimos.add(x);}// zeramos o contador de primos para o proximo loopcontaprimo=0;}//aqui pegamos o ultimo numero que adicionamos na lista de primos e teremos o maior primo encontrado no intervaloSystem.out.println("O maior primo do intervalo é: "+primos.get(primos.size()-1));}}
Espero ter ajudado.
Jelson11 like
Deixando uma solução alternativa:
classMain{publicstaticvoidmain(String[]args){intlimiteInferior=1;intlimiteSuperior=100;intmaiorPrimo=-1;//inicializa a variável;//Pecorre os valores de forma decrescente.for(inti=limiteSuperior;i>=limiteInferior;i--){if(ehPrimo(i)==true){maiorPrimo=i;break;}}System.out.println("Maior primo: "+maiorPrimo);}privatestaticbooleanehPrimo(longn){// 1 não é primo.if(n==1){returnfalse;}for(inti=2;i<n;i++){if(n%i==0)returnfalse;}returntrue;}}
G
G2m
Muito obrigado!
staroski1 like
Esse método está errado, ele só verifica se o número não é divisível por múltiplos de 2.
Jelson1
Acho que implementei certo.
Ou não estou vêndo o erro!
pmlm2 likes
Porque multiplos de 2? Ele incrementa o i normalmente em uma unidade. É ineficiente porque o ciclo necessitava apenas de ir até à raiz quadrada de n e não até ao próprio n mas não é errado.