đề 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…
Xin hướng giải quyết đề tài này ạ!
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.
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.
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:
- Xây dựng class BigInt gồm 2 thuộc tính là
public string DãyChữSốvàpublic bool Dấu - Xây dựng phương thức khử “âm 0”
- Xây dựng phương thức khử chữ số 0 ở đầu
- 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)
- Định nghĩa lại các phương thức
Equal(),ToString(); - Định nghĩa operator
=,!= - Định nghĩa operator
>,< - Định nghĩa operator
>=,<= - Xây dựng class PhépToánCóNhớ gồm 2 thuộc tính int
- Xây dựng hàm cộng chữ số với chữ số, trả về kết quả là PhépToánCóNhớ
- Xây dựng hàm trừ chữ số cho chữ số, trả về kết quả là PhépToánCóNhớ
- Định nghĩa operator
+,- - Định nghĩa operator
++,-- - Định nghĩa operator
* - Định nghĩa operator
/ - Định nghĩa operator
% - Định nghĩa lại phương thức
GetHashCode()
1 Like
Dạ vâng… E cám ơn ạ! Hiện tại em đang dùng C++ ạ.
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
Cái này thấy hơi thừa. Cộng trừ hai số int mà class chi vậy.
à, 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
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;

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?