01/10/2018, 08:44

Xin hướng giải quyết đề tài này ạ!

đề tài: Tìm số nguyên tố nhỏ hơn n( với n là số nguyên lớn)
Mình không hiểu số nguyên lớn là như thế nào ạ.
Mình có cần xây dựng lớp số nguyên lớn (các phép tính cộng,trừ,nhân,chia) không?
và cách lưu trữ số nguyên lớn nữa…

X viết 10:57 ngày 01/10/2018

Trên diễn đàn có nhiều topic bàn về số nguyên lớn (Big integer) rồi bạn ơi Dùng nút search để tìm nhé. Dựa vào đó có thể tìm số nguyên tố lớn.

rogp10 viết 10:48 ngày 01/10/2018

Cài số nguyên lớn với phép mod nữa nhé, nếu không thì không test được đâu.

Trần Hoàn viết 10:48 ngày 01/10/2018

Nếu bạn dùng C# thì khỏi xây dựng đi.
https://daynhauhoc.com/t/hoi-ve-biginteger-trong-c

Còn nếu bạn muốn tự mình xây dựng số nguyên lớn thì đây là cách mình từng làm:

  1. Xây dựng class BigInt gồm 2 thuộc tính là public string DãyChữSốpublic bool Dấu
  2. Xây dựng phương thức khử “âm 0”
  3. Xây dựng phương thức khử chữ số 0 ở đầu
  4. Xây dựng hàm tạo không tham số, hàm tạo từ (string), hàm tạo từ (string, bool)
  5. Định nghĩa lại các phương thức Equal(), ToString();
  6. Định nghĩa operator =, !=
  7. Định nghĩa operator >, <
  8. Định nghĩa operator >=, <=
  9. Xây dựng class PhépToánCóNhớ gồm 2 thuộc tính int
  10. Xây dựng hàm cộng chữ số với chữ số, trả về kết quả là PhépToánCóNhớ
  11. Xây dựng hàm trừ chữ số cho chữ số, trả về kết quả là PhépToánCóNhớ
  12. Định nghĩa operator +, -
  13. Định nghĩa operator ++, --
  14. Định nghĩa operator *
  15. Định nghĩa operator /
  16. Định nghĩa operator %
  17. Định nghĩa lại phương thức GetHashCode()
Nhật Nam viết 10:53 ngày 01/10/2018

Dạ vâng… E cám ơn ạ! Hiện tại em đang dùng C++ ạ.

Trần Hoàn viết 11:00 ngày 01/10/2018

Thế thì bạn không cần định nghĩa lại Equal(), ToString(), GetHashCode() mà chỉ cần xây dựng hàm ToString() để đọc thôi

rogp10 viết 10:56 ngày 01/10/2018
  1. Xây dựng class PhépToánCóNhớ gồm 2 thuộc tính int
  2. Xây dựng hàm cộng chữ số với chữ số, trả về kết quả là PhépToánCóNhớ
  3. Xây dựng hàm trừ chữ số cho chữ số, trả về kết quả là PhépToánCóNhớ

Cái này thấy hơi thừa. Cộng trừ hai số int mà class chi vậy.

Trần Hoàn viết 11:00 ngày 01/10/2018

à, thì phép cộng 2 chữ số ra 1 chữ số và có thể có nhớ, không int thì bool cũng đc

rogp10 viết 10:58 ngày 01/10/2018

Cái đó viết thẳng còn nhanh hơn mà

s = (uint64_t) (a[i] + b[i] + carry);
c[i] = s >= RADIX? s : s - RADIX;
carry = s >= RADIX? 1 : 0;
Bài liên quan
0