Bir sayının asal olup olmadığını görsel olarak belirlemek için kullanılabilecek bir N × N boşluk ve alt çizgi ızgarası oluşturalım. (N herhangi bir pozitif tam sayı olabilir.)
Bu ızgara üç basit kurala sahiptir:
- N'inci sütun, n - 1 alt çizgilerinin ardından bir boşluk izleyen yinelenen modeli içerir. Bu örüntü ilk satırda başlar ve N satırında muhtemelen orta örüntüde durdurulur (Satırlar ve sütunlar 1-indekslenir.)
- İlk sütun, tüm boşluklar yerine tüm alt çizgilerle değiştirilir.
- Bir yerde bir boşluk oluşursa, satır dizini sütun dizinine eşittir, bunun yerine bir alt çizgi kullanılır.
Örnek: N = 10
1
1234567890 <-- column indices
1__________
2__________
3__________
4_ ________
5__________
6_ _______
7__________
8_ _ ______
9__ _______
10_ __ _____
^ row indices
Endeksler sadece netlik içindir. Düz ızgaranın kendisi (programınızın çıktısı gereken şey):
__________
__________
__________
_ ________
__________
_ _______
__________
_ _ ______
__ _______
_ __ _____
Dikkat:
- İlk sütun tüm alt çizgilerdir.
- İkinci sütun, 2. satırdaki alt çizgi hariç alt çizgi uzayı, alt çizgi uzayı vb.
- Üçüncü sütun, 3. satırdaki alt çizgi hariç alt çizgi alt çizgi, alt çizgi alt çizgi vb. Gider.
- vb.
Ayrıca, 1'in yanı sıra, her sütunda yalnızca asal numaralı satırların alt çizgileri olduğuna dikkat edin.
Alt çizgiler yazı tipi genişliğinin tamamını kapladığından, her asal numaralı satır kesintisiz bir düz çizgi oluşturur. Yani bir sayının asal olup olmadığını kontrol etmek görsel olarak oldukça kolaydır; çizgisinin tüm sütunlarda düz olup olmadığını kontrol etmeniz yeterlidir. (Aslında satır indeksinin kareköküne bakmak yeterlidir, ancak bu ızgarayı çıktılamak daha az zarif görünüyor.)
program
Stdin (veya en yakın alternatif) üzerinden N verilen bu ızgaraları çizecek bir program yazın. Çıktı stdout'a (veya en yakın alternatife) gider ve yalnızca isteğe bağlı bir son satır olan boşluklar, alt çizgiler ve yeni satırlar içermelidir.
En kısa kod kazanır.
n
satır için, bu 1'in bir bölen k
değilse th karakterini boşluk yapın . k
m
m