You are on page 1of 8

Câu hỏi ôn tập cuối kỳ (đang cập nhật, sẽ xong trong ngày 1/1/2022

I. Phần thực hành SageMath (60%)


Viết chương trình SageMath thực thi các nhiệm vụ sau

Một số câu cơ bản về lập trình SageMath


Câu 1:
a) Đầu vào: n (số tự nhiên), đầu ra các mảng số nguyên dương(sắp từ bé đến lớn)
có tổng bằng n.
Ví dụ: n=5 cho ra kết quả
[[1, 1, 1, 1, 1], [1, 1, 1, 2], [1, 2, 2], [1, 1, 3], [2, 3], [1, 4], [5]]
b) Đầu vào: n và k (số tự nhiên), đầu ra các mảng k số nguyên dương (sắp từ bé
đến lớn) có tổng bằng n.Ví dụ: n=5 cho ra kết quả
[[1, 2, 2], [1, 1, 3]].

Câu 2: Tiếp tục câu 1, vấn đề sau được dùng trong Bitcoin.
Đầu vào n, đầu ra tất cả các mảng n số nguyên dương [c1,c2,...,cn] sắp xếp từ nhỏ đến
lớn (c1 <=c2<= …<=cn) thỏa mãn 2 điều kiện sau:
(i) SUM(ci,i=1..n) = SUM(2^i,i=1..n) (=2^(n+1)-2)
(ii) SUM(ci,i=1..h) >= SUM(2^i,i=1..h) (=2^(h+1)-2), với mọi h từ 1 đến n-1

Cụ thể chẳng hạn n=3


(i) c1+c2+c3 = 2^1+2^2+2^3=14
(ii) c1>=2, c1+c2>=2^1+2^2=6=8-2, c1

Đầu ra sẽ có
[[4, 5, 5], [4, 4, 6], [3, 5, 6], [2, 6, 6], [3, 4, 7], [2, 5, 7], [3, 3, 8], [2, 4, 8]]

n=2: [[3, 3], [2, 4]]


n=4: [[7, 7, 8, 8], [6, 8, 8, 8], [7, 7, 7, 9], [6, 7, 8, 9], [5, 8, 8, 9], [6, 6, 9, 9], [5, 7, 9, 9], [4,
8, 9, 9], [3, 9, 9, 9], [6, 7, 7, 10], [6, 6, 8, 10], [5, 7, 8, 10], [4, 8, 8, 10], [5, 6, 9, 10], [4, 7,
9, 10], [3, 8, 9, 10], [2, 9, 9, 10], [5, 5, 10, 10], [4, 6, 10, 10], [3, 7, 10, 10], [2, 8, 10, 10],
[6, 6, 7, 11], [5, 7, 7, 11], [5, 6, 8, 11], [4, 7, 8, 11], [3, 8, 8, 11], [5, 5, 9, 11], [4, 6, 9, 11],
[3, 7, 9, 11], [2, 8, 9, 11], [4, 5, 10, 11], [3, 6, 10, 11], [2, 7, 10, 11], [4, 4, 11, 11], [3, 5, 11,
11], [2, 6, 11, 11], [6, 6, 6, 12], [5, 6, 7, 12], [4, 7, 7, 12], [5, 5, 8, 12], [4, 6, 8, 12], [3, 7, 8,
12], [2, 8, 8, 12], [4, 5, 9, 12], [3, 6, 9, 12], [2, 7, 9, 12], [4, 4, 10, 12], [3, 5, 10, 12], [2, 6,
10, 12], [3, 4, 11, 12], [2, 5, 11, 12], [3, 3, 12, 12], [2, 4, 12, 12], [5, 6, 6, 13], [5, 5, 7, 13],
[4, 6, 7, 13], [3, 7, 7, 13], [4, 5, 8, 13], [3, 6, 8, 13], [2, 7, 8, 13], [4, 4, 9, 13], [3, 5, 9, 13],
[2, 6, 9, 13], [3, 4, 10, 13], [2, 5, 10, 13], [3, 3, 11, 13], [2, 4, 11, 13], [5, 5, 6, 14], [4, 6, 6,
14], [4, 5, 7, 14], [3, 6, 7, 14], [2, 7, 7, 14], [4, 4, 8, 14], [3, 5, 8, 14], [2, 6, 8, 14], [3, 4, 9,
14], [2, 5, 9, 14], [3, 3, 10, 14], [2, 4, 10, 14], [5, 5, 5, 15], [4, 5, 6, 15], [3, 6, 6, 15], [4, 4,
7, 15], [3, 5, 7, 15], [2, 6, 7, 15], [3, 4, 8, 15], [2, 5, 8, 15], [3, 3, 9, 15], [2, 4, 9, 15], [4, 5,
5, 16], [4, 4, 6, 16], [3, 5, 6, 16], [2, 6, 6, 16], [3, 4, 7, 16], [2, 5, 7, 16], [3, 3, 8, 16], [2, 4,
8, 16]]
Hãy tối ưu chương trình của bạn để chạy được n lớn, chẳng hạn n=10 (bitcoin dùng
mức này), n=20, n=30. Đầu ra chỉ đòi hỏi:
a) Số phần tử
b) Mảng có độ lệch chuẩn (standard deviation) nhỏ nhất
(Sử dụng hàm std, ví dụ: sage: std([1,2,2,4,5,6,8]) # The standard deviation)

Ví dụ: Với n=4 thì


a) Số phần tử là 97
b) Mảng có độ lệch chuẩn nhỏ nhất là [7,7,8,8]

Với n=5 thì


a) Số phần tử là 3116
b) Mảng có độ lệch chuẩn nhỏ nhất là [12,12,12,13,13]

Ghi chú: Bạn nào thực thi được n=30 trước khi thi, gửi email cho thầy sớm nhất sẽ được
BONUS + 1 điểm; n=2022 sẽ được BONUS + 5 điểm.

SageMath với các chủ đề

Số học
Câu 3: Vẽ đồ thị số số nguyên tố

Hàm prime_pi(n) cho số số nguyên tố nhỏ thua n.


Với gợi ý trên, hãy vẽ

Vấn đề này liên quan đến kết quả thú vị sau trong số học về số nguyên tố

(Định lý Hadamard-Poussin, ~1896). Mặc dù số số nguyên tố là vô hạn, không có quy


luật về phân bố, nhưng số số nguyên tố vẫn tuân theo giới hạn nói trên.
Câu 4: Hãy viết chương trình tính tỉ lệ trong giới hạn ở trên, so sánh

Câu 5: Cho đến nay có 51 số nguyên tố Mersenne, dạng 2^p-1 (p: nguyên tố), được tìm
thấy (nguồn: https://www.mersenne.org/). Các số nguyên tố Mersenne đầu tiên là
3, 7, 31, 127 (tương ứng với P = 2, 3, 5, 7). Hãy viết chương trình SageMath để liệt kê
được càng nhiều số càng tốt. (Cố gắng được 40 số đầu tiên nhé!)

Câu 6: Thực thi việc giải phương trình trên vành Zn, ví dụ dưới đây cho Z13. Phương
trình đồng dư x^15+1=0 có các nghiệm đơn x=4, 10, và 12.

Câu 7: Xét dãy các số tự nhiên định nghĩa như sau: a1 = 0, a2 = 1, và an+2 là số viết
ghép các chữ số của an+1 sau đó là an. Ví dụ, a3 = 10, a4 = 101, và a5 = 10110. Xác
định n sao cho an chia hết cho 11, như sau:
(a) Tìm số n nhỏ nhất sao cho an chia hết cho 11.
(b) Hãy tiếp tục tìm 5 số n tiếp theo sao cho an chia hết cho 11. Bạn có đưa ra dự đoán
gì về điều kiện cho n để an chia hết cho 11?
Câu 8: Dùng SageMath, giải phương trình 102^70 +1 = a^37 (mod 113), với 0 <= a <
113.

Câu 9: Bài toán logarit rời rạc liên quan đến Mã hóa công khai Diffie-Hellman
Vẽ đồ thị hàm log thực

Bài toán logarit rời rạc: Nhóm nhân G=(Zp)* (p: số nguyên tố). Cho b là lũy thừa của a
trong G, tức là b=a^n (mod p) với n nào đó.Khi đó n giống như là “log” cơ số a của b (lấy
mod p). Khi p là một số nguyên tố lớn thì việc tìm n là khá khó.

Hàm hàm log trên trường hữu hạn, khó nhìn thấy quy luật: Dưới đây là hàm log mod 53
Viêt

Viết chương trình SageMath giải bài toán logarit rời rạc: Đầu vào cho a,b,p, tìm n. Thử
chương trình bạn viết với:
p=93450983094850938450983409611
a=45416776270485369791375944998
b=85771409470770521212346739540

Ví dụ trao đổi khóa:


Đa thức: Thực thi các ví dụ tính toán trên Sage Math tính kết thức, cơ sở Groebner. Ứng dụng
để giải hệ phương trình đa thức.

Câu 10: Giải hệ phương trinh

Câu 11: Cho


Dùng lý thuyết bài toán thành viên trong cơ sở Groebner,
a) Chứng minh A=a^4+b^4+c^4=9
b) Chứng minh B=a^5+b^5+c^5 khác 11. Liệu bạn có tính được giá trị của B?

II. Phần lý thuyết (20%)


Trình bày hiểu biết về
1) Kết thức
2) Trường hữu hạn, cách xây dựng trường hữu hạn có p^n phần tử như thế nào
3) Mã RS

III. Câu hỏi liên quan đến bài tập nhóm (20%)
Về QR code hoặc Ứng dụng của cơ sở Groebner

You might also like