ปัญหาคอนกรูเอนซ์ของจำนวนเต็มยกกำลังสองมอดุลโลเอ็น (อังกฤษ: Congruence of squares (mod n)) ในเรื่องทฤษฎีจำนวนนั้นได้ถูกนำมาใช้บ่อยครั้งในปัญหาที่เกี่ยวข้องกับการแยกตัวประกอบของจำนวนเต็ม โดยเริ่มต้นจากปัญหาที่ว่า " จงหาจำนวนเต็ม x,y ที่ทำให้สมการดังกล่าวเป็นจริง เมื่อกำหนดจำนวนเต็ม n " โดย
ซึ่งการใช้ขั้นตอนวิธีการแยกตัวประกอบของจำนวนเต็มของแฟร์มาต์ (อังกฤษ: Fermat's factorization method) โดยการพยายามแยกตัวประกอบของ n ในรูปแบบ n = x2 − y2 = (x + y) (x − y). นั้น ต้องใช้เวลาที่ยาวนานมากในการค้นหาคำตอบ เพราะต้องค้นหาคำตอบที่เป็นไปได้เป็นจำนวนมาก และมีตัวเลขที่อาจเป็นคำตอบได้จริงน้อยมาก ในทางปฏิบัติจึงไม่นิยมใช้ แต่จะอาศัยการแยกตัวประกอบจากปัญหาที่ง่ายกว่า ซึ่งคือ ปัญหาคอนกรูเอนซ์ของจำนวนเต็มยกกำลังสองมอดุลโลเอ็น ซึ่งสามารถเขียนเป็นสมการได้ดังนี้
- และเพิ่มข้อกำหนดว่า เพื่อจำกัดปริมาณชุดคำตอบที่ได้ให้อยู่ในขอบเขตที่ต้องการ
ขั้นตอนวิธีการแก้ปัญหา
จากสมการ จะได้ว่าเราสามารถเปลี่ยนรูปของปัญหาดังนี้
ซึ่งหมายความว่า สามารถหาร ลงตัว แต่ด้วยข้อกำหนดที่ว่า จึงจะได้ว่า หรือ ไม่สามารถหารด้วย n ลงตัวได้เพียงตัวใดตัวหนึ่ง โดยอาจใช้วิธีการแก้ปัญหาดังนี้
- 1.) ใช้ ซึ่งในที่นี้ แทนตัวหารร่วมมากของ a และ b จากที่กล่าวไปดังข้างต้น จึงสามารถอธิบายได้ว่า และ ต้องมีตัวประกอบทุกตัวของ n หรือสามารถอธิบายได้ว่า โดย k คือจำนวนเต็มบวกตัวหนึ่ง โดยเราจะพิจารณา ที่เป็นจำนวนเต็มบวกมีค่าอยู่ระหว่าง ถึง และทำการค้นหา y ที่เป็นจำนวนเต็มบวกทั้งหมดที่ทำให้ x+y เป็นตัวประกอบ และทำการตรวจสอบว่าค่าของ (x-y,n) ว่ามีค่าสอดคล้องตามที่ต้องการหรือไม่ โดยวิธีการหาตัวหารร่วมมากโดยขั้นตอนวิธีการของยูคลิด(อังกฤษ: Euclidean algorithm) ดังนี้
ในการหาตัวหารร่วมมากระหว่าง a และ b โดยกำหนด a > b จะมีวิธีการหาตัวหารร่วมมากดังนี้ โดยมีข้อกำหนดว่า ทุกๆขั้นตอนที่ k ใดๆ ( k คือ 0 หรือ จำนวนเต็มบวกใดๆ) rk−2 = qkrk−1 + rk ซึ่ง ( 0≤ rk , qk ± โดย qkจะมีเครื่องหมายเป็นลบเมื่อ a เป็นจำนวนเต็มบวก และ b เป็นจำนวนเต็มลบ หรือ a เป็นจำนวนเต็มลบ และ b เป็นจำนวนเต็มบวก) โดยจะมีขั้นตอนการดำเนินการดังนี้
- a = q0b + r0
- b = q1r0 + r1
- r0 = q2r1 + r2
- r1 = q3r2 + r3
- …
- rn-2 = qnrn-1
จากสมการข้างต้นจะได้ qn = ซึ่งจะเห็นได้ว่า จะสามารถตรวจคำตอบได้อย่างรวดเร็วซึ่งใช้เวลาไม่เกิน O(h) โดย h เป็นจำนวนหลักของ b ที่เป็นจำนวนที่น้อยกว่า a จากข้อกำหนด ซึ่ง h = + 1 ( โดย k= log10(b) )
- 2.)ทำการค้นหา โดยค้นหา x ที่มีค่าระหว่าง ถึง n แล้วทำการตรวจสอบค่า z ที่ได้ว่า เป็นจำนวนเต็มหรือไม่ ถ้าเป็นจำนวนเต็มก็จะกำหนดให้ แล้วทำการตรวจสอบตัวหารร่วมมากระหว่าง (x-y) และ (x+y) ว่าตรงตามเงื่อนไขที่กำหนดหรือไม่ ตัวอย่าง เช่น กำหนดให้ n = 35 จงหาจำนวนเต็มบวก x,y ที่ทำให้ จะได้ว่าทำการค้นหาค่า x ตั้งแต่ 6 ถึง 35 แต่ได้พบว่าเมื่อ x = 6 จะได้ว่า
เพราะฉะนั้นจะได้ว่า x = 6 , y = 1 เป็นคำตอบหนึ่งของสมการ ซึ่งจากการตรวจสอบ (6-1,35) = 5 และ (6+1,35) = 7 ซึ่งจะพบว่าตรงตามเงื่อนไขที่ได้กำหนดไว้ จึงถือว่า x=6,y=1 เป็นคำตอบหนึ่งของสมการนี้
รหัสเทียมและประสิทธิภาพการทำงาน
จากแนวคิดขั้นตอนวิธีการแก้ปัญหาข้างต้น จะพบว่า ถ้าจะทำการเขียนรหัสเทียม (อังกฤษ: Pseudocode) เพื่อแสดงขั้นตอนการทำงานที่เกิดขึ้น หรือเป็นการแสดงขั้นตอนเบื้องต้นที่เกิดขึ้นในการใช้คอมพิวเตอร์ในการดำเนินการแก้ไขปัญหานั้น จะสามารถแสดงขั้นตอนต่างๆเป็นรหัสเทียมได้ดังนี้
- - รหัสเทียมเพื่อการค้นหาตัวหารร่วมมาก
- function gcd(a, b)
- while b ≠ 0
- begin
- t := b
- b := a mod b
- a := t
- end
- return a
จากรหัสเทียมข้างต้น function gcd จะทำการหาค่าของตัวหารร่วมมากระหว่าง a และ b แล้วทำการคืนค่าตัวหารร่วมมากกลับมาจากการเรียกใช้ function โดยจะเสียเวลาทำงานไม่เกิน O(h) โดย h เป็นจำนวนหลักของ b ที่เป็นจำนวนที่น้อยกว่า a จากข้อกำหนด ซึ่ง h = + 1 ( โดย k= log10(b) ) ตามที่ได้กล่าวไปแล้วข้างต้น ซึ่งเมื่อนำไปใช้ต่อไปในขั้นตอนการแก้ปัญหาต่อไปในรูปแบบที่นำเสนอไปดังข้างต้น ซึ่งอาจเขียนเป็นรหัสเทียมได้ดังนี้
สำหรับรหัสเทียมต่อไปนี้จะเป็นการนำไปใช้ต่อเพื่อหาผลลัพธ์ในรูปแบบที่ 1.)
- function csquare(n)
- x = ceil(sqrt(n))
- while x <= n
- begin
- y := 1
- while y < x
- begin
- if (gcd(x+y,n) > 1)
- begin
- if (gcd(x-y,n) * gcd(x+y,n) mod n == 0)
- begin
- print(x) print(y) break
- end
- end
- y:=y+1
- end
- x := x+1
- end
- x = ceil(sqrt(n))
จากรหัสข้างต้น สามารถอธิบายได้ดังนี้ โดยเริ่มต้นนั้นกำหนดค่าให้ x= เพื่อจะได้ทำการค้นหาในช่วง ถึง n ตามต้องการ แล้วจึงทำการทดสอบค่า y ที่เป็นไปได้ทั้งหมดซึ่งเป็นจำนวนเต็มบวก (ตั้งแต่ 1 ถึง x) ซึ่งถ้าพบว่าตรงตามเงื่อนไขที่ต้องการก็จะแสดงคำตอบและหยุดการทำงานทันทีเมื่อพบคำตอบชุดหนึ่งแล้ว ซึ่งจะทำให้เสียเวลาการทำงานรวมทั้งสิ้นจากการทำวงวนภายนอก Θ (n) และกระบวนการทำงานภายในที่ต้องวิ่งแปรผันตามค่า x รวมทั้งสิ้น O(x) จึงเสียเวลา O() และเมื่อคำนึงถึงการเรียกใช้ function gcd ที่มีภาระเป็น O(log n) แล้ว จึงได้ว่ากระบวนการทำงานตามรหัสเทียมดังกล่าวจะใช้เวลาในการทำงานรวมทั้งสิ้น O( log(n))
สำหรับรหัสเทียมต่อไปนี้จะเป็นการนำไปใช้ต่อเพื่อหาผลลัพธ์ในรูปแบบที่ 2.)
- function csquare(n)
- x = ceil(sqrt(n))
- while x <= n
- begin
- z := (x*x) mod n
- if (sqrt(z) is integer)
- begin
- y := sqrt(z)
- if (gcd(x-y,n) * gcd(x+y,n) mod n == 0)
- begin
- print(x) print(y) break
- end
- end
- x := x+1
- end
- x = ceil(sqrt(n))
จากรหัสข้างต้น สามารถอธิบายได้ดังนี้ โดยเริ่มต้นนั้นกำหนดค่าให้ x= เพื่อจะได้ทำการค้นหาในช่วง ถึง n ตามต้องการ เช่นเดียวกับรูปแบบที่ 1.) แล้วจึงทำการหาค่า z โดย โดยทำการทดสอบว่า เป็นจำนวนเต็มหรือไม่ โดยถ้าเป็นจำนวนเต็มจะกำหนดให้ y = แล้วจึงทำการตรวจคำตอบโดยการตรวจสอบตัวหารร่วมมากของ (x+y,n) และ (x-y,n) ว่าเป็นไปตามเงื่อนไขที่ได้กำหนดหรือไม่ ซึ่งถ้าพบว่าตรงตามเงื่อนไขที่ต้องการก็จะแสดงคำตอบและหยุดการทำงานทันทีเมื่อพบคำตอบชุดหนึ่งแล้ว ซึ่งจะทำให้เสียเวลาการทำงานรวมทั้งสิ้นจากการทำวงวน Θ (n) และเมื่อคำนึงถึงการเรียกใช้ function gcd ที่มีภาระเป็น O(log n) แล้ว จึงได้ว่ากระบวนการทำงานตามรหัสเทียมดังกล่าวจะใช้เวลาในการทำงานรวมทั้งสิ้น O(n log(n)) ซึ่งจะเห็นได้ว่าอาจทำงานเร็วกว่ารูปแบบที่ 1.) แต่ก็จะใช้หน่วยความจำที่มากกว่าเพราะต้องคำนวณ mod n
ปัญหาที่เกี่ยวข้อง
สำหรับปัญหาคอนกรูเอนซ์ของจำนวนเต็มยกกำลังสองมอดุลโลเอ็นนั้น โดยวิธีการแก้ปัญหาที่ได้นำเสนอนั้น เป็นวิธีการพื้นฐานเท่านั้น ซึ่งได้มีผู้พัฒนาวิธีการแก้ปัญหาดังกล่าวเพื่อให้มีประสิทธิภาพยิ่งขึ้นในทางปฏิบัติ เช่น (อังกฤษ: Dixon's factorization method) รวมถึงเป็นพื้นฐานในการแก้ไขปัญหาอื่นๆอีกมากที่เกี่ยวข้องกับทฤษฎีจำนวน เช่น ปัญหาตะแกรงกำลังสอง(อังกฤษ: Quadratic sieve) , ปัญหา(อังกฤษ: General number field sieve) เป็นต้น
เพิ่มเติม
สำหรับนิยามที่ได้ใช้เพื่อประเมินประสิทธิภาพเชิงเวลา เช่น สัญกรณ์โอใหญ่ (อังกฤษ: Big O-notation) รวมถึง ความรู้เกี่ยวกับสัญกรณ์เชิงเวลาในรูปแบบภาพยนตร์เพื่อการศึกษาภาษา ซึ่งสามารถค้นคว้าเพิ่มเติมได้ทั้งในรูปแบบของภาพยนตร์เพื่อการศึกษาและบทความเพื่อความเข้าใจ รวมถึงข้อมูลอื่นๆเพื่อประกอบการแก้ปัญหานั้น เช่น บทความทางด้านความรู้ต่างๆเกี่ยวข้องกับทฤษฎีจำนวน เช่น ความรู้ที่เกี่ยวข้องกับเลขคณิตมอดุลาร์(อังกฤษ: Modular arithmetic) รวมถึงความสัมพันธ์ในรูปแบบ(อังกฤษ: Congruence relation) และสัญลักษณ์ต่างๆที่ใช้ในการเขียนรหัสเทียม รวมถึงหลักภาษาในการเขียนรหัสเทียมเพื่อบรรยายขั้นตอนวิธีเพื่อการทำงานตามความต้องการ สามารถอ่านเพิ่มเติมได้ในบทความ How to write Pseudocode (ในรูปแบบ.doc) รวมถึง รวมถึงความรู้เพื่อประกอบความเข้าใจอื่นๆซึ่งสามารถพบได้ในส่วนของอ้างอิง
อ้างอิง
- . คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2011-08-20. สืบค้นเมื่อ 2011-09-29.
- ความรู้เกี่ยวกับสัญกรณ์เชิงเวลาในรูปแบบภาพยนตร์เพื่อการศึกษาภาษา
- http://www.vcharkarn.com/vblog/36819/2
- How to write Pseudocode
- http://www.minich.com/education/psu/cplusplus/stylesheets/pseudocode.htm
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
pyhakhxnkruexnskhxngcanwnetmykkalngsxngmxdulolexn xngkvs Congruence of squares mod n ineruxngthvsdicanwnnnidthuknamaichbxykhrnginpyhathiekiywkhxngkbkaraeyktwprakxbkhxngcanwnetm odyerimtncakpyhathiwa cnghacanwnetm x y thithaihsmkardngklawepncring emuxkahndcanwnetm n ody x2 y2 n displaystyle x 2 y 2 n sungkarichkhntxnwithikaraeyktwprakxbkhxngcanwnetmkhxngaefrmat xngkvs Fermat s factorization method odykarphyayamaeyktwprakxbkhxng n inrupaebb n x2 y2 x y x y nn txngichewlathiyawnanmakinkarkhnhakhatxb ephraatxngkhnhakhatxbthiepnipidepncanwnmak aelamitwelkhthixacepnkhatxbidcringnxymak inthangptibticungimniymich aetcaxasykaraeyktwprakxbcakpyhathingaykwa sungkhux pyhakhxnkruexnskhxngcanwnetmykkalngsxngmxdulolexn sungsamarthekhiynepnsmkariddngni x2 y2 modn displaystyle x 2 equiv y 2 pmod n aelaephimkhxkahndwa x y modn displaystyle x not equiv pm y pmod n ephuxcakdprimanchudkhatxbthiidihxyuinkhxbekhtthitxngkarkhntxnwithikaraekpyhacaksmkar x2 y2 modn displaystyle x 2 equiv y 2 pmod n caidwaerasamarthepliynrupkhxngpyhadngni x2 y2 0 modn displaystyle x 2 y 2 equiv 0 pmod n x y x y 0 modn displaystyle x y x y equiv 0 pmod n dd sunghmaykhwamwa x y x y displaystyle x y x y samarthhar n displaystyle n lngtw aetdwykhxkahndthiwa x y modn displaystyle x not equiv pm y pmod n cungcaidwa x y displaystyle x y hrux x y displaystyle x y imsamarthhardwy n lngtwidephiyngtwidtwhnung odyxacichwithikaraekpyhadngni 1 ich sunginthini a b displaystyle a b aethntwharrwmmakkhxng a aela b cakthiklawipdngkhangtn cungsamarthxthibayidwa x y n displaystyle x y n aela x y n displaystyle x y n txngmitwprakxbthuktwkhxng n hruxsamarthxthibayidwa x y n x y n kn displaystyle x y n cdot x y n kn ody k khuxcanwnetmbwktwhnung odyeracaphicarna x displaystyle x thiepncanwnetmbwkmikhaxyurahwang n displaystyle left lceil sqrt n right rceil thung n displaystyle n aelathakarkhnha y thiepncanwnetmbwkthnghmdthithaih x y epntwprakxb aelathakartrwcsxbwakhakhxng x y n wamikhasxdkhlxngtamthitxngkarhruxim odywithikarhatwharrwmmakodykhntxnwithikarkhxngyukhlid xngkvs Euclidean algorithm dngni inkarhatwharrwmmakrahwang a aela b odykahnd a gt b camiwithikarhatwharrwmmakdngni odymikhxkahndwa thukkhntxnthi k id k khux 0 hrux canwnetmbwkid rk 2 qkrk 1 rk sung 0 rk qk displaystyle a b displaystyle lfloor frac a b rfloor ody qkcamiekhruxnghmayepnlbemux a epncanwnetmbwk aela b epncanwnetmlb hrux a epncanwnetmlb aela b epncanwnetmbwk odycamikhntxnkardaeninkardngni a q0b r0 b q1r0 r1 r0 q2r1 r2 r1 q3r2 r3 rn 2 qnrn 1 caksmkarkhangtncaid qn a b displaystyle a b sungcaehnidwa casamarthtrwckhatxbidxyangrwderwsungichewlaimekin O h ody h epncanwnhlkkhxng b thiepncanwnthinxykwa a cakkhxkahnd sung h k displaystyle lfloor k rfloor 1 ody k log10 b 2 thakarkhnha x2 z modn displaystyle x 2 equiv z pmod n odykhnha x thimikharahwang n displaystyle lceil sqrt n rceil thung n aelwthakartrwcsxbkha z thiidwa z displaystyle sqrt z epncanwnetmhruxim thaepncanwnetmkcakahndih z y displaystyle sqrt z y aelwthakartrwcsxbtwharrwmmakrahwang x y aela x y watrngtamenguxnikhthikahndhruxim twxyang echn kahndih n 35 cnghacanwnetmbwk x y thithaih x2 y2 0 modn displaystyle x 2 y 2 equiv 0 pmod n caidwathakarkhnhakha x tngaet 6 thung 35 aetidphbwaemux x 6 caidwa 62 36 1 12 modn displaystyle textstyle 6 2 36 equiv 1 equiv 1 2 pmod n ephraachanncaidwa x 6 y 1 epnkhatxbhnungkhxngsmkar sungcakkartrwcsxb 6 1 35 5 aela 6 1 35 7 sungcaphbwatrngtamenguxnikhthiidkahndiw cungthuxwa x 6 y 1 epnkhatxbhnungkhxngsmkarnirhsethiymaelaprasiththiphaphkarthangancakaenwkhidkhntxnwithikaraekpyhakhangtn caphbwa thacathakarekhiynrhsethiym xngkvs Pseudocode ephuxaesdngkhntxnkarthanganthiekidkhun hruxepnkaraesdngkhntxnebuxngtnthiekidkhuninkarichkhxmphiwetxrinkardaeninkaraekikhpyhann casamarthaesdngkhntxntangepnrhsethiymiddngni rhsethiymephuxkarkhnhatwharrwmmak dd function gcd a b while b 0 begint b b a mod b a t dd end return a dd cakrhsethiymkhangtn function gcd cathakarhakhakhxngtwharrwmmakrahwang a aela b aelwthakarkhunkhatwharrwmmakklbmacakkareriykich function odycaesiyewlathanganimekin O h ody h epncanwnhlkkhxng b thiepncanwnthinxykwa a cakkhxkahnd sung h k displaystyle lfloor k rfloor 1 ody k log10 b tamthiidklawipaelwkhangtn sungemuxnaipichtxipinkhntxnkaraekpyhatxipinrupaebbthinaesnxipdngkhangtn sungxacekhiynepnrhsethiymiddngni sahrbrhsethiymtxipnicaepnkarnaipichtxephuxhaphllphthinrupaebbthi 1 function csquare n x ceil sqrt n while x lt n beginy 1 while y lt x beginif gcd x y n gt 1 beginif gcd x y n gcd x y n mod n 0 beginprint x print y break dd end dd end y y 1 dd end dd x x 1 end dd dd cakrhskhangtn samarthxthibayiddngni odyerimtnnnkahndkhaih x n displaystyle lceil sqrt n rceil ephuxcaidthakarkhnhainchwng n displaystyle lceil sqrt n rceil thung n tamtxngkar aelwcungthakarthdsxbkha y thiepnipidthnghmdsungepncanwnetmbwk tngaet 1 thung x sungthaphbwatrngtamenguxnikhthitxngkarkcaaesdngkhatxbaelahyudkarthanganthnthiemuxphbkhatxbchudhnungaelw sungcathaihesiyewlakarthanganrwmthngsincakkarthawngwnphaynxk 8 n aelakrabwnkarthanganphayinthitxngwingaeprphntamkha x rwmthngsin O x cungesiyewla O n2 displaystyle n 2 aelaemuxkhanungthungkareriykich function gcd thimipharaepn O log n aelw cungidwakrabwnkarthangantamrhsethiymdngklawcaichewlainkarthanganrwmthngsin O n2 displaystyle n 2 log n sahrbrhsethiymtxipnicaepnkarnaipichtxephuxhaphllphthinrupaebbthi 2 function csquare n x ceil sqrt n while x lt n beginz x x mod n if sqrt z is integer begin y sqrt z if gcd x y n gcd x y n mod n 0 beginprint x print y break dd end dd end dd dd x x 1 end dd dd cakrhskhangtn samarthxthibayiddngni odyerimtnnnkahndkhaih x n displaystyle lceil sqrt n rceil ephuxcaidthakarkhnhainchwng n displaystyle lceil sqrt n rceil thung n tamtxngkar echnediywkbrupaebbthi 1 aelwcungthakarhakha z ody x2 z modn displaystyle x 2 equiv z pmod n odythakarthdsxbwa z displaystyle sqrt z epncanwnetmhruxim odythaepncanwnetmcakahndih y z displaystyle sqrt z aelwcungthakartrwckhatxbodykartrwcsxbtwharrwmmakkhxng x y n aela x y n waepniptamenguxnikhthiidkahndhruxim sungthaphbwatrngtamenguxnikhthitxngkarkcaaesdngkhatxbaelahyudkarthanganthnthiemuxphbkhatxbchudhnungaelw sungcathaihesiyewlakarthanganrwmthngsincakkarthawngwn 8 n aelaemuxkhanungthungkareriykich function gcd thimipharaepn O log n aelw cungidwakrabwnkarthangantamrhsethiymdngklawcaichewlainkarthanganrwmthngsin O n log n sungcaehnidwaxacthanganerwkwarupaebbthi 1 aetkcaichhnwykhwamcathimakkwaephraatxngkhanwn x2 displaystyle x 2 mod npyhathiekiywkhxngsahrbpyhakhxnkruexnskhxngcanwnetmykkalngsxngmxdulolexnnn odywithikaraekpyhathiidnaesnxnn epnwithikarphunthanethann sungidmiphuphthnawithikaraekpyhadngklawephuxihmiprasiththiphaphyingkhuninthangptibti echn xngkvs Dixon s factorization method rwmthungepnphunthaninkaraekikhpyhaxunxikmakthiekiywkhxngkbthvsdicanwn echn pyhataaekrngkalngsxng xngkvs Quadratic sieve pyha xngkvs General number field sieve epntnephimetimsahrbniyamthiidichephuxpraeminprasiththiphaphechingewla echn sykrnoxihy xngkvs Big O notation rwmthung khwamruekiywkbsykrnechingewlainrupaebbphaphyntrephuxkarsuksaphasa sungsamarthkhnkhwaephimetimidthnginrupaebbkhxngphaphyntrephuxkarsuksaaelabthkhwamephuxkhwamekhaic rwmthungkhxmulxunephuxprakxbkaraekpyhann echn bthkhwamthangdankhwamrutangekiywkhxngkbthvsdicanwn echn khwamruthiekiywkhxngkbelkhkhnitmxdular xngkvs Modular arithmetic rwmthungkhwamsmphnthinrupaebb xngkvs Congruence relation aelasylksntangthiichinkarekhiynrhsethiym rwmthunghlkphasainkarekhiynrhsethiymephuxbrryaykhntxnwithiephuxkarthangantamkhwamtxngkar samarthxanephimetimidinbthkhwam How to write Pseudocode inrupaebb doc rwmthung rwmthungkhwamruephuxprakxbkhwamekhaicxunsungsamarthphbidinswnkhxngxangxingxangxing khlngkhxmulekaekbcakaehlngedimemux 2011 08 20 subkhnemux 2011 09 29 khwamruekiywkbsykrnechingewlainrupaebbphaphyntrephuxkarsuksaphasa http www vcharkarn com vblog 36819 2 How to write Pseudocode http www minich com education psu cplusplus stylesheets pseudocode htm hnngsuxprakxbkarxangxing 2004 thvsdicanwn 1st ed okhrngkartarawithyasastraelakhnitsastr mulnithisngesrimoxlimpikwichakaraelaphthnamatrthanwithyasastrsuksa ISBN 9 749 22351 9 2005 Elementary number theory and its applications 5th ed Pearson Addison Wesley ISBN 0 321 26314 6