Creemos una cuadrícula N × N de espacios y guiones bajos que se puedan usar para determinar visualmente si un número es primo. (N puede ser cualquier número entero positivo).
Esta cuadrícula tiene tres reglas simples:
- La enésima columna contiene el patrón repetido de n - 1 guiones bajos seguido de un espacio. Este patrón comienza en la primera fila y se detiene, posiblemente a mitad del patrón, en la fila N. (Las filas y las columnas están indexadas en 1).
- La primera columna se reemplaza con todos los guiones bajos en lugar de todos los espacios.
- Si ocurre un espacio en algún lugar, el índice de la fila es igual al índice de la columna, se reemplaza con un guión bajo.
Ejemplo: N = 10
1
1234567890 <-- column indices
1__________
2__________
3__________
4_ ________
5__________
6_ _______
7__________
8_ _ ______
9__ _______
10_ __ _____
^ row indices
Los índices son solo por claridad. La cuadrícula simple (lo que debe generar su programa) es:
__________
__________
__________
_ ________
__________
_ _______
__________
_ _ ______
__ _______
_ __ _____
Darse cuenta de:
- La primera columna es todos los guiones bajos.
- La segunda columna va en subrayado, subrayado, etc., excepto el subrayado en la fila 2.
- La tercera columna va en subrayado, subrayado, subrayado, subrayado, subrayado, etc., excepto el subrayado en la fila 3.
- etc.
Observe también que, además de 1, solo las filas con números primos tienen guiones bajos en cada columna.
Como los guiones bajos abarcan todo el ancho de la fuente, cada fila numerada principal forma una línea continua continua. Por lo tanto, verificar si un número es primo o no es bastante fácil visualmente; solo verifique si su línea es sólida en todas las columnas. (De hecho, mirar hacia la raíz cuadrada del índice de fila es suficiente, pero generar esa cuadrícula parece menos elegante).
Programa
Escriba un programa que dibuje estas cuadrículas dado N a través de stdin (o la alternativa más cercana). La salida va a stdout (o la alternativa más cercana) y solo debe contener espacios, guiones bajos y nuevas líneas, con una nueva línea final opcional.
El código más corto gana.
nlínea th, haga que el kcarácter th sea un espacio si kes un divisor de meso no es 1 o m.
