Dùng bốn số 2 để tạo ra mọi số nguyên: lời giải của Dirac

Công nghệ08 tháng 11, 2026·4 phút đọc

Bài toán giải trí kinh điển yêu cầu dùng đúng bốn chữ số 2 để tạo ra một số tự nhiên bất kỳ. Nhà vật lý Paul Dirac từng "phá hỏng" cuộc chơi khi tìm ra công thức tổng quát cho mọi số, dựa trên căn bậc hai lồng nhau và logarit cơ số 2.

Dùng bốn số 2 để tạo ra mọi số nguyên: lời giải của Dirac
Ảnh minh hoạ do AI tạo

Có một câu đố toán học thú vị thu hút được cả trẻ con lẫn các giáo sư đại học: cho đúng bốn chữ số 2, dùng bất kỳ phép toán nào để tạo ra một số tự nhiên cho trước, không dùng thêm chữ số nào khác.

Điều đáng chú ý là độ khó của bài toán tăng dần theo trình độ toán học của người chơi. Và theo ghi chép của Graham Farmelo trong cuốn sách The Strangest Man: The Hidden Life of Paul Dirac, Quantum Genius, đây từng là trò tiêu khiển được các nhà toán học yêu thích vào những năm 1920 — cho đến khi Paul Dirac tìm ra lời giải tổng quát cho mọi số.

Từ tiểu học đến đại học

Học sinh tiểu học có thể giải nhiều số nhỏ bằng các phép cộng, trừ, nhân, chia đơn giản:

  • 1 = (2 + 2) / (2 + 2)
  • 2 = 2/2 + 2/2
  • 3 = 2·2 − 2/2
  • 4 = 2 + 2 + 2 − 2
  • 5 = 2·2 + 2/2
  • 6 = 2·2·2 − 2

Lên trung học, khi được học lũy thừa và giai thừa (factorial), phạm vi số có thể tạo ra mở rộng đáng kể:

  • 18 = 2^(2^2) + 2
  • 28 = (2 + 2)! + 2 + 2
  • 256 = (2 + 2)^(2 + 2)
  • 65536 = 2^(2^(2^2))

Tiếp theo là các "mẹo", chẳng hạn coi số 22 là một cách dùng hợp lệ của hai chữ số 2. Nhờ vậy có thể viết:

  • 26 = 22 + 2 + 2
  • 11 = 22 / √(2 + 2)
  • 444 = 222 · 2

Số 7 nổi tiếng là khó, nhưng nếu cho phép dùng thêm các công cụ toán học như hàm Gamma (Gamma function), việc này trở nên dễ dàng:

7 = Γ(2) + 2 + 2 + 2

Người càng giỏi toán càng tạo được nhiều số hơn. Có những cách kết hợp bằng tích phân, phân số tuần hoàn và toán tử tổ hợp. Một ví dụ được yêu thích dùng số phức:

12 = |2 + 2√(−2)|²

Như vậy cuộc chơi không kết thúc ngay cả khi đã tốt nghiệp đại học.

Khi Dirac tìm ra công thức tổng quát

Mọi chuyện thay đổi khi Paul Dirac tìm ra lời giải tổng quát cho mọi số nhờ căn bậc hai lồng nhau. Vì √2 = 2^(1/2) = 2^(2^(−1)), khi lấy căn bậc hai liên tiếp n lần ta có:

√√…(n lần)…√2 = 2^(2^(−n))

Chỉ cần thêm vài phép logarit cơ số 2:

log₂(2^(2^(−n))) = 2^(−n)

log₂(log₂(2^(2^(−n)))) = −n

Từ đó rút ra công thức:

n = −log₂( log₂( √√…(n lần)…√2 ) )

Còn một điểm nhỏ: công thức trên chỉ dùng ba chữ số 2. Điều này dễ khắc phục vì 2 = √(2 + 2), nên có thể thay một chữ số bất kỳ bằng cách viết đó để có đúng bốn chữ số 2:

n = −log_(√(2+2)) ( log₂( √√…(n lần)…√2 ) )

Có thể nói đây là "ăn gian", nhưng nó vẫn nằm trong khuôn khổ luật chơi. Lưu ý rằng n không thực sự xuất hiện trong biểu thức — nó chỉ giúp đếm số lần lặp căn bậc hai. Ví dụ, một cách khác để biểu diễn 7 là:

7 = −log_(√(2+2)) ( log₂( √√√√√√√2 ) )

Biểu thức này có đúng bốn chữ số 2 và chỉ dùng những phép toán cơ bản, hợp lý. Rõ ràng mọi số đều có thể được biểu diễn theo cách này; thách thức duy nhất là vẽ cho đúng chỗ tất cả các dấu căn lồng nhau.

Góc nhìn

Với lập trình viên và kỹ sư, câu đố này là một bài tập tư duy về đệ quy (recursion) và biểu diễn số: mỗi phép căn bậc hai lồng thêm một lớp chính là một bước đệ quy, và công thức của Dirac thực chất mã hóa một bộ đếm bằng cấu trúc lồng nhau thay vì bằng ký hiệu. Cách "thay 2 bằng √(2+2)" để đạt đúng số lượng phần tử cũng là một bài học quen thuộc khi viết code — đôi khi chỉ cần thêm một biến trung gian hợp lệ là đủ thỏa điều kiện ràng buộc.

Đây cũng là ví dụ điển hình cho việc một bài toán tưởng như chỉ để giải trí lại mở ra góc nhìn sâu hơn về logarit và cấu trúc biểu diễn. Với người làm công nghệ, khả năng nhìn ra một quy luật tổng quát đằng sau những trường hợp riêng lẻ chính là kỹ năng cốt lõi trong thiết kế thuật toán và hệ thống.

Nguồn: eli.thegreenplace.net · Quy trình biên tập

Chia sẻ:FacebookX