ทฤษฏีส่วนที่เหลือของจีน
หากจำนวนเต็มขนาดใหญ่โดยพลการปรากฏขึ้นบ่อยครั้งหรือการแสดงจำนวนเต็มขนาดใหญ่ในภาษาโปรแกรมปลายทางมีค่าใช้จ่ายมากเกินไปคุณสามารถลองใช้ทฤษฎีส่วนที่เหลือของจีน
เลือกจำนวนเต็มที่ค่อนข้างสำคัญจำนวนคู่ m i > = 2 และคุณสามารถแสดงจำนวนมากจาก 0 ถึง lcm (m 1 , m 2 , ... , m i ) -1
ตัวอย่างเช่นฉันเลือก 2, 3, 5, 11, 79, 83, 89, 97 จากนั้นฉันสามารถแสดงหมายเลขน้อยกว่า 18680171730 โดยไม่ซ้ำกัน 10000000000 (1e10) สามารถแสดงเป็น 0,1,0,1,38,59,50,49 (1e10 mod 2, 3 ... , 97) ซึ่งไม่จำเป็นต้องแสดงเป็นคลาส / โครงสร้าง Big Integer พิเศษซึ่งอาจประหยัด บางไบต์ในภาษาการเขียนโปรแกรมบางอย่าง
การเพิ่มและการลบสามารถทำได้โดยตรงโดยใช้การเป็นตัวแทนนี้ ตัวอย่าง:
(0,1,0,1,38,59,50,49)+(0,2,0,6,23,20,16,53) = 1e10 + 5000
= (0+0 mod 2, 1+2 mod 3, 0+0 mod 5, 1+6 mod 11, 38+23 mod 79, 59+20 mod 83, 50+16 mod 89, 49+53 mod 97)