¿Cuál es la forma más rápida de encontrar todos los posibles pares primos en una matriz determinada?

Solución de fuerza bruta:

Calcule para el GCD de cada par. Esto dará un límite superior de O ((N ^ 2) * log (x)) donde x es el valor máximo posible del elemento en la matriz.

Enfoque optimizado a través de tamiz y DP:

Supongo que el tamaño del elemento máximo posible en la matriz no supera los 10 ^ 7. Precalcule un factor primo para cada número mediante el método de tamizado. Esto hará posible la factorización prima.

Código C ++: Ideone.com

Ahora use DP para calcular el número de pares no primos.

Al agregar un elemento arr [i-1] para obtener dp [i] de dp [i-1], factorizar arr [i-1] del método anterior y calcular el número de pares no primos. Para esto, necesitará un mapa que mantenga un recuento de números totales en una matriz divisible para cada primo. Ejemplo:

Supongamos que arr [i-1] = 15 y mp [3] = 9, mp [5] = 7, por lo que el número total de nuevos pares que pueden hacerse posibles sería (9 + 7) = 16. Así dp [i] = dp [i-1] +16. Reste dp [n] de nC2 para obtener el número total de pares no primos.

EDITAR: Se puede calcular fácilmente el número total de pares coprimos restando el número total de pares no primos del número total de pares.

More Interesting

Cómo comparar el proceso de entrevista para Amazon en India y EE. UU.

¿Cómo puede un programador autodidacta prepararse para una entrevista de trabajo?

Programación dinámica (DP): dos jugadores juegan el siguiente juego: eligen un número aleatorio N (menos de 2 mil millones) y luego, a partir de 1, se turnan para multiplicar el número del turno anterior con 2 o 9 (su elección). Quien llegue a N primero gana. ¿Determinar ganador del juego de números 2/9?

¿Se está preparando una sexta edición de Cracking the Coding Interview? Si es así, ¿qué podemos esperar de él?

Cómo prepararse para una entrevista de servicios web de Amazon

¿Cómo debo prepararme para una entrevista técnica de Infosys con 2 años de experiencia con .NET?

Cómo prepararse para entrevistas en cualquier gran empresa de software

¿Qué temas gráficos debo estudiar para estar adecuadamente preparado para una entrevista con un ingeniero de software de Google? ¿Valdría la pena estudiar también algoritmos para árboles de expansión mínima, flujos de red máximos, coincidencia bipartita, etc.?

¿Cuáles son algunas preguntas comunes en una entrevista de cuatro grandes?

Cómo prepararse para una entrevista, digamos, por ejemplo, que la entrevista trata sobre las aspiraciones para el siguiente nivel en mi carrera de ingeniería mecánica

Escriba una función recursiva para llenar una matriz MXN con valores de 1 a M * N en el patrón ESPIRAL (debería funcionar para cualquier M> = 0 y cualquier N> = 0).

¿Puedo aprender algún lenguaje de programación en un día?

¿Cuál es su revisión del material C ++ en GeeksforGeeks?

¿Qué puedo esperar en la evaluación en línea SDE de Amazon? ¿Puede alguien que haya realizado la evaluación darme ejemplos de los tipos de preguntas formuladas?

¿Qué tipo de preguntas de diseño se hacen en la entrevista de Google / Facebook / Amazon?