some image

Codes and Tags

Obtener suma de Numeros Primos Palindromos

Etiquetas: Blog, Programación No comments

Este código pretende mostrar la forma de obtener la suma de todos los números primos, cuya característica principal corresponda que sean palindromos / capicua.

Para obtener los números primos se utiliza el método nextProbablePrime de la clase BigInteger. Para validar si es palindromo existen varias formas de hacerlo, aunque en este caso se utiliza el método reverse de la clase StringBuilder ( Clase muy util para el manejo de cadenas :) )

import java.math.BigInteger;

/**
 * Un palíndromo es una palabra, número o frase que se lee igual hacia adelante
 * que hacia atrás. Si se trata de un número, se llama capicúa. Habitualmente,
 * las frases palindrómicas se resienten en su significado cuanto más largas
 * son. (Wikipedia)
 * 
 * un número primo es un número natural mayor que 1 que tiene únicamente dos
 * divisores distintos: él mismo y el 1. Los números primos se contraponen así a
 * los compuestos, que son aquellos que tienen algún divisor natural aparte de
 * sí mismos y del 1. El número 1, por convenio, no se considera ni primo ni
 * compuesto. (Wikipedia).
 * 
 * Este codigo obtiene la suma de todos los numeros primos inferiores a un
 * numero dado, cuya validacion principal es que sean palindrimos
 * 
 * @author Codes and tags
 * 
 */

public class Problem3 {

	public static void main(String args[]) {

		Problem3 ejemplo = new Problem3();
		// Tiempo inicial
		long startTime = System.currentTimeMillis();
		// Hace magia
		System.out.println("Obteniendo suma de palindromos primos...");
		System.out.println("Suma =>" + ejemplo.getSumPrimesPalindromes(500));
		// Tiempo final
		long endtTime = System.currentTimeMillis();
		// Tiempo total
		System.out.println("Tiempo invertido ms : " + (endtTime - startTime));

	}

	/**
	 * Obtiene la suma de todos los numero primos palindromos por debajo del
	 * valor especificado como parametro
	 * 
	 * @param maxPrime
	 * @return
	 */
	public long getSumPrimesPalindromes(int maxPrime) {

		long sum = 0;
		BigInteger prime = BigInteger.ONE;

		// Obtiene los numeros primos inferiores al maximo primo especificado
		while (prime.intValue() < maxPrime) {
			prime = prime.nextProbablePrime();
			// Si es palindromo lo suma
			if (isPalindrome(prime.toString())) {
				sum += prime.longValue();
				System.out.println("Prime Palindrome : " + prime);
			}
		}

		// Devuelve la suma
		return sum;
	}

	/**
	 * Valida si la cadena enviada es palindromo
	 * 
	 * @param word
	 * @return
	 */
	public boolean isPalindrome(String chain) {
		StringBuilder copy = new StringBuilder(chain);
		if (chain.equals(copy.reverse().toString())) {
			return true;
		} else {
			return false;
		}
	}

}

Salida del programa

Obteniendo suma de palindromos primos...
Prime Palindrome : 2
Prime Palindrome : 3
Prime Palindrome : 5
Prime Palindrome : 7
Prime Palindrome : 11
Prime Palindrome : 101
Prime Palindrome : 131
Prime Palindrome : 151
Prime Palindrome : 181
Prime Palindrome : 191
Prime Palindrome : 313
Prime Palindrome : 353
Prime Palindrome : 373
Prime Palindrome : 383
Suma =>2205
Tiempo invertido ms : 86

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Logo Java

Add your comment