Creiamo una griglia N × N di spazi e caratteri di sottolineatura che può essere utilizzata per determinare visivamente se un numero è primo. (N può essere qualsiasi numero intero positivo.)
Questa griglia ha tre semplici regole:
- L'ennesima colonna contiene il motivo ripetuto di n - 1 caratteri di sottolineatura seguito da uno spazio. Questo modello inizia dalla prima riga e viene interrotto, possibilmente a metà percorso, nella riga N. (Le righe e le colonne sono indicizzate 1).
- La prima colonna è sostituita da tutti i trattini bassi anziché da tutti gli spazi.
- Se uno spazio si presenta da qualche parte, l'indice di riga è uguale all'indice di colonna, viene sostituito da un carattere di sottolineatura.
Esempio: N = 10
1
1234567890 <-- column indices
1__________
2__________
3__________
4_ ________
5__________
6_ _______
7__________
8_ _ ______
9__ _______
10_ __ _____
^ row indices
Gli indici sono solo per chiarezza. La stessa griglia (ciò che il tuo programma deve produrre) è:
__________
__________
__________
_ ________
__________
_ _______
__________
_ _ ______
__ _______
_ __ _____
Notare che:
- La prima colonna contiene tutti i trattini bassi.
- La seconda colonna indica lo spazio di sottolineatura, lo spazio di sottolineatura, ecc., Ad eccezione del carattere di sottolineatura nella riga 2.
- La terza colonna indica lo spazio di sottolineatura, lo spazio di sottolineatura e così via, eccetto il carattere di sottolineatura nella riga 3.
- eccetera.
Si noti inoltre che oltre a 1, solo le righe con numeri primi hanno caratteri di sottolineatura in ogni colonna.
Poiché i caratteri di sottolineatura coprono l'intera larghezza del carattere, ogni riga numerata per primo forma una linea continua continua. Quindi controllare se un numero è primo o no è abbastanza facile visivamente; controlla solo se la sua linea è solida su tutte le colonne. (In effetti è sufficiente guardare la radice quadrata dell'indice di riga ma emettere quella griglia sembra meno elegante.)
Programma
Scrivi un programma che disegnerà queste griglie fornite da N tramite stdin (o l'alternativa più vicina). L'output va allo stdout (o alternativa più vicina) e dovrebbe contenere solo spazi, trattini bassi e newline, con una nuova riga finale opzionale.
Vince il codice più corto.
n
linea th, fai in modo che il k
carattere th sia uno spazio se k
è un divisore di m
quello non è 1 o m
.