Solucionando o Problema 3 do Projeto EulerDescricao do Problema: Find the largest prime factor of a composite number.The prime factors of 13195 are 5, 7, 13 and 29.What is the largest prime factor of the number 600851475143 ?Codigo:package br.com.projetoeuler.problema3;/** * Problema: Find the largest prime factor of a composite number. * @author Lucas Frizzo * lucas-frizzo.blogspot.com */public class Problema3 { public int fatorPrimo(long num) { long aux = num; for (int i = 1; i <= num; i++) { int primo = ehPrimo(i); if (primo != 0) { System.out.println("primo: "+primo); while(aux%primo == 0){ long divisao = aux/primo; System.out.println("divisao:"+divisao); if (divisao != 1) { aux = divisao; }else{ return primo; } } } } return 0; } public int ehPrimo(int num) { int primo = num; int cont = 0; for (int i = 1; i <= num; i++) { if (primo%i == 0) { cont ++; } } if (cont==2) { return primo; } return 0; }}package br.com.projetoeuler.problema3;import java.math.BigInteger;/** * Problema: Find the largest prime factor of a composite number. * @author Lucas Frizzo * lucas-frizzo.blogspot.com */public class TestProblema3 { public static void main(String[] args) { Problema3 problema3 = new Problema3(); final long num = 600851475143L; //final long num = 13195; System.out.println("O maior Fator Primo de "+num+" e "+problema3.fatorPrimo(num)); }}Resolucao: O maior Fator Primo de 600851475143 e 6857 Ao buscar uma ferramenta para revisar e melhorar meus codigos me deparei com algumas opcoes, e uma das que me chamou a atencao foi o PMD (Programming Mistake Detector) pela facilidade da instalacao e a simplicidade de executar a verificacao do codigo fonte.A funcionalidade do PMD e procurar e avisar sobre possiveis e potenciais problemas como por exemplo:Possiveis erros - blocos try/catch/finally vazios.Codigo morto - nao utilizadas variaveis locais, parametros e metodos privados.Codigo Suboptimal - Utilizacao String / StringBuffer inadequadamente.Expressoes muito complicadaa - if usado desnecessariamente , loops for que podem ser trocados por loops while.Duplicacao de codigo - o codigo copiado / colado pode tambem gerar bugs copiado / coladoPara a instalacao do PMD como plugin no Eclipse segue um link com o passo a passo :http://pmd.sourceforge.net/eclipse/Assim como a instalacao, a utilizacao do PMD tambem e simples:Selecione a Classe e clique com o botao direito -> PMD -> Check Code With PMDComo vemos na imagem, a guia Violations Overview, mostrou varias ocorrencias, existe um aviso para a linha 21, esta dizendo que a variavel de referencia id e um nome curto.E voce usa PMD ou outro tipo de plugin/ferramenta para verificacao de qualidade do seu codigo? Deixe seu comentario! Exemplo de um Problema no Codility:Dado um vetor de N posicoes, retornar o tamanho do vetor considerando as seguintes condicoes:a posicao de N[0] = x e a primeira posicao e a ultima posicao considerar N[?] = -1.Exemplo:Dado o vetor a seguir N[1,4,-1,3,2] retornar o tamanho do vetor.N[0] = 1N[1] = 4N[2] = 2N[3] = -1Entao o tamanho desse vetor e 4.public class Problema { /** * @author Lucas Frizzo * http://lucas-frizzo.blogspot.com/ * * * @param A * @return */ public int listLength ( int[] A ) { int tam =A.length; int[]B = new int[tam];