Número primos em Java

Sites Comentar >> Marcelo Korjenioski

Faz um bom tempo que não posto nada mas agora estou vol­tando e irei criar tuto­ri­ais bási­cos sobre Java.

Eu a pouco tempo parei de tra­ba­lhar com PHP para come­çar com Java. Não estou dei­xando o PHP de lado ape­nas mudei de lin­gua­gem para melho­rar meu salá­rio. AS vagas de PHP aqui em Curi­tiba estão com salá­rios meno­res que as de Java. Con­ti­nuo tra­ba­lhando com Web e os tuto­ri­ais de PHP irão continuar.

Come­cei a fazer Pos em Java na UTFPR e na aula de nive­la­mento foi pedido para criar um algo­ritmo para núme­ros primos.

Encon­trei uma boa expli­ca­ção da lógica dos núme­ros pri­mos no Yahoo! Res­pos­tas e fiz o código base­ado nele.

import java.io.IOException;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Marcelo Korjenioski
*/
public class NumerosPrimos {

public static void main(String[] args) {
System.out.println("Entre com valor");
byte[] b = new byte[10]; //buffer
try {
System.in.read(b);
int numero = Integer.parseInt(new String(b).trim());
for (int i = 0; i <= numero; i++) {
if (primo(i)) {
System.out.println(i);

}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static boolean primo(int numero) {
boolean resultado = true;
// numero 1 não é primo pois é divisivel apenas por ele mesmo
if(numero <= 1) {
resultado = false;
} else if(numero % 2 == 0 &amp;amp;&amp;amp; numero > 2) {
// Feita a verificacao apenas para otimizar o codigo
// aqui eu descarto todos os numero pares divisiveis por 2 maior que 2 assim so vai sobrar os impares
resultado = false;
} else if(numero % 3 == 0 &amp;amp;&amp;amp; numero > 3) {
// Feita a verificacao apenas para otimizar o codigo
// agora eu tiro todos os numero impares divisiveis por 3 maior que 3.
resultado = false;
}else {
// numero com raiz exata não é primo.
int raiz = (int)Math.sqrt(numero) + 1;
// verifico se o numero é divisivel por algum outro numero menor que ele.
for(int i=3;i<raiz;i+=2) {
// caso divida com algum numero ele não é primo e paro o loop.
if(numero % i ==0) {
resultado = false;
break;
}
}
}
return resultado;
}
}

Caso tenha alguma duvida deixe um comen­tá­rio que terei pra­zer em ajudar.

Comen­tá­rios são bem vin­dos assim posso melho­rar a qua­li­dade dos tuto­ri­ais aqui apresentados.

Com­par­ti­lhe com seus ami­gos:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • LinkedIn
Tags: , , ,


blog comments powered by Disqus
Designed by NattyWP Wordpress Themes.
Images by desEXign.