Chúng ta hãy tạo một lưới không gian N × N và dấu gạch dưới có thể được sử dụng để xác định trực quan nếu một số là số nguyên tố. (N có thể là bất kỳ số nguyên dương nào.)
Lưới này có ba quy tắc đơn giản:
- Cột thứ n chứa mẫu lặp lại của n - 1 dấu gạch dưới theo sau là một khoảng trắng. Mẫu này bắt đầu ở hàng đầu tiên và được dừng lại, có thể là mẫu giữa, tại hàng N. (Hàng và cột được lập chỉ mục 1).
- Cột đầu tiên được thay thế bằng tất cả các dấu gạch dưới thay vì tất cả các khoảng trắng.
- Nếu một khoảng trắng xuất hiện ở đâu đó thì chỉ mục hàng bằng với chỉ mục cột, nó được thay thế bằng dấu gạch dưới.
Ví dụ: N = 10
1
1234567890 <-- column indices
1__________
2__________
3__________
4_ ________
5__________
6_ _______
7__________
8_ _ ______
9__ _______
10_ __ _____
^ row indices
Các chỉ số chỉ cho rõ ràng. Bản thân lưới đơn giản (những gì chương trình của bạn phải xuất) là:
__________
__________
__________
_ ________
__________
_ _______
__________
_ _ ______
__ _______
_ __ _____
Thông báo rằng:
- Cột đầu tiên là tất cả các dấu gạch dưới.
- Cột thứ hai đi vào không gian gạch dưới, không gian gạch dưới, v.v., ngoại trừ dấu gạch dưới ở hàng 2.
- Cột thứ ba đi vào không gian gạch dưới, gạch dưới gạch dưới, v.v., ngoại trừ dấu gạch dưới ở hàng 3.
- Vân vân.
Cũng lưu ý rằng ngoài 1, chỉ các hàng được đánh số nguyên tố có dấu gạch dưới trong mỗi cột.
Vì dấu gạch dưới bao trùm toàn bộ chiều rộng phông chữ, mỗi hàng được đánh số nguyên tố tạo thành một đường liền nét liên tục. Vì vậy, kiểm tra xem một số có phải là số nguyên tố hay không là khá dễ dàng; chỉ cần kiểm tra xem dòng của nó có vững chắc trên tất cả các cột không. (Trong thực tế, việc tìm kiếm căn bậc hai của chỉ số hàng là đủ nhưng xuất ra lưới đó có vẻ kém thanh lịch hơn.)
Chương trình
Viết chương trình sẽ vẽ các lưới đã cho N thông qua stdin (hoặc thay thế gần nhất). Đầu ra đi đến thiết bị xuất chuẩn (hoặc thay thế gần nhất) và chỉ nên chứa khoảng trắng, dấu gạch dưới và dòng mới, với một dòng mới tùy chọn.
Mã ngắn nhất sẽ thắng.
n
dòng thứ, hãy đặt k
ký tự thứ một thành khoảng trắng nếu k
là ước của số m
đó không phải là 1 hoặc m
.