让我们创建一个N×N的空格和下划线网格,可用于直观地确定数字是否为质数。(N可以是任何正整数。)
该网格具有三个简单规则:
- 第n列包含n-1下划线的重复模式,后跟一个空格。此模式从第一行开始,并在第N行停止(可能在中间模式)。(行和列为1索引)。
- 第一列将替换为所有下划线而不是所有空格。
- 如果行索引等于列索引的某个位置出现空格,则将其替换为下划线。
示例:N = 10
1
1234567890 <-- column indices
1__________
2__________
3__________
4_ ________
5__________
6_ _______
7__________
8_ _ ______
9__ _______
10_ __ _____
^ row indices
索引只是为了清楚起见。普通网格本身(程序必须输出的)是:
__________
__________
__________
_ ________
__________
_ _______
__________
_ _ ______
__ _______
_ __ _____
注意:
- 第一列是所有下划线。
- 除了第二行的下划线外,第二列转到下划线空间,下划线空间等。
- 第三列为下划线下划线空间,下划线下划线空间等,除了第3行的下划线。
- 等等
还要注意,除1外,只有质数行在每一列中都有下划线。
由于下划线跨越整个字体宽度,因此每个以撇号标记的行均形成连续的实线。因此从视觉上检查数字是否为质数非常容易;只需检查其行在所有列中是否均线。(实际上,查找行索引的平方根就足够了,但是输出该网格似乎不太优雅。)
程序
编写一个程序,将通过stdin(或最接近的替代方案)在给定N的情况下绘制这些网格。输出将输出到stdout(或最接近的替代输出),并且应仅包含空格,下划线和换行符,并带有可选的尾随换行符。
最短的代码获胜。
n
th行,k
如果第一个字符k
的除数m
不是1或,则将第个字符设置为空格m
。