fbpx
วิกิพีเดีย

ขั้นตอนวิธีการแยกตัวประกอบของจำนวนเต็มของแฟร์มาต์

วิธีแยกตัวประกอบของแฟร์มาต์ (อังกฤษ: Fermat's factorization method) ตั้งชื่อตามผู้คิดค้นคือ ปิแยร์ เดอ แฟร์มาต์ (Pierre de Fermat) โดยเป็นผลงานหนึ่งที่เกี่ยวกับทฤษฎีจำนวน ที่ใช้ในการแยกตัวประกอบโดยมีหลักการที่ว่า จำนวนเต็มคี่ใดๆ สามารถแทนได้ด้วยผลต่างของเลขกำลังสองได้ดังนี้

จากการสังเกตนี้ ทำให้สามารถนำไปประยุกต์ใน ตะแกรงกำลังสอง (quadratic sieve) และ วิธีแยกตัวประกอบของดิกสัน (Dixon's Factorization Method) จากสมบัติดังกล่าวสามารถมองได้ว่า

โดยที่ ถ้า a หรือ b ไม่เท่ากับ 1 แสดงว่า a กับ b เป็นตัว ประกอบแท้ของ N สามารถเขียนแยกได้

หรือ

ดังนั้น

เนื่องจาก N เป็นจำนวนเต็มคี่ แล้ว a และ b เป็นจำนวนคี่ด้วย ดังนั้นจะได้ทั้งสองส่วนของสมการเป็นจำนวนเต็มและยังเขียนได้ว่า

จากสมบัติเหล่านี้จะนำมาใช้แยกตัวประกอบจำนวนเต็ม เมื่อเทียบกับ การหารเชิงทดลอง (trial division) แล้ววิธีนี้อาจจะมีประสิทธิภาพน้อยกว่า แต่เมื่อนำทั้ง วิธีการแยกตัวประกอบของแฟร์มาต์ กับการหารเชิงทดลอง มารวมกันแล้วจะทำให้ได้ประสิทธิภาพที่มากกว่าการใช้วิธีใดวิธีหนึ่ง

วิธีการเบื้องต้น

จากทฤษฎีข้างต้นหาค่า a ที่ทำให้   สามารถยกกำลังสองเป็นจำนวนเต็มได้วิธีการดังกล่าวสามารถเขียนรหัสเทียมได้ดังนี้

รหัส
FermatFactor(N): // N ควรจะเป็นจำนวนคี่ a ← ceil(sqrt(N)) b2 ← a*a - N while b2 isn't a square: a ← a + 1 // สมมูลกับ b2 ← b2 + 2*a + 1 b2 ← a*a - N //  a ← a + 1 endwhile return a - sqrt(b2) // หรือ a + sqrt(b2) 

ตัวอย่างรหัสที่สร้างโดยภาษา C++

int FermatFactor(int N){ int a=ceil(sqrt(N)); int b2=a*a-N; while(sqrt(b2)-(int)sqrt(b2)>0){ //วิธีการตรวจสอบรากที่สองว่าเป็นจำนวนเต็มหรือไม่ อาจจะยังไม่ดีเท่าไหร่แต่ก็พอใช้ได้ a++; b2=a*a-N; } return a-sqrt(b2); } 
หลักการเบื้องต้น

หลักการคือต้องการแยกตัวประกอบของ N ซึ่ง N ควรเป็นจำนวนคี่ถ้าหากเป็นจำนวนคู่สามารถแยกตัวประกอบ 2 ออกไปก่อน จากนั้นหาตัวประกอบโดยหาค่า a และ b ที่เป็นจำนวนเต็มน้อยที่สุดที่   โดยที่   และถ้าแยกตัวประกอบได้ N=N*1 จะได้ว่า N เป็นจำนวนเฉพาะ โดยทดสอบทีละเงื่อนไขและบวกค่า a เพิ่มขึ้นเลื่อยๆจนพบคำตอบที่ได้ตัวประกอบลู่เข้ารากของ N มากที่สุด ตัวอย่างเช่น N=5959

a: 78 79 80
b2: 125 282 441
ขั้นตอนตัวอย่าง
1. เริ่มต้นโดยหา   จะได้ b2 = 125
2. ตรวจสอบ b2 ว่าสามารถหารากได้เป็นจำนวนเต็มหรือไม่ เนื่องจาก b2 = 125 หารากได้ประมาณ 11.18 ไม่ใช่จำนวนเต็มจึงเพิ่มค่า a เป็น 79 แล้วหาต่อได้   แล้วทำซ้ำขั้นตอนที่ 2 อีกรอบจนกว่าจะสามารถหารากได้เป็นจำนวนเต็มให้ไปทำขั้นตอนที่ 3
3. เมื่อทำมา 3 ครั้งจะได้ a=80 และ b2 = 441 ซึ่งสามารถหารากได้ 21 ดังนั้นจะได้ว่า  , and  . ซึ่ง ได้ 59 และ 101 เป็นตัวประกอบของ 5959

ประสิทธิภาพ

เมื่อให้   จะได้ว่าจำนวนครั้งในการวนลูปคือ   ของกรณีที่แย่ที่สุดคือเมื่อ N เป็นจำนวนเฉพาะ ซึ่งจะได้ประสิทธิภาพการทำงานเป็น   แต่ถ้ากรณีที่ c ต่างกับ รากของ N น้อยกว่า   ถ้าใช้จำนวนการทำงานแค่ครั้งเดียว หรือถ้าคำตอบจริงยิ่งเข้าไป รากของ N มากเท่าไหร่ประสิทธิภาพในทางปฏิบัติก็จะดีขึ้น ซึ่งจากทั้งหมดแสดงให้เห็นว่าประสิทธิภาพของวิธีแยกตัวประกอบของแฟร์มาต์จะขึ้นอยู่กับค่าของ N

การประยุกต์วิธีของแฟร์มาต์กับการหารเชิงทดลอง

จากวิธีของแฟร์มาต์จะเห็นว่าได้ประสิทธิภาพคือ   เมื่อเทียบกับ วิธีการหารเชิงทดลองที่ได้ประสิทธิภาพที่ดีกว่าคือ O(√n / log n) ซึ่งจะเห็น ดังนั้นเราสามารถเพิ่มประสิทธิภาพให้กับ วิธีการหาตัวประกอบทั้งสองให้ดีขึ้นได้โดยนำทั้งสองวิธีมารวมกันโดยใช้วิธีการหาตัวประกอบของแฟร์มาต์เป็นหลัก และใช้วิธีการหารเชิงทดลองตัดกรณีที่ใช้พิจารณามากๆได้ จาก ทฤษฏีการหารเชิงทดลอง ตัวประกอบที่เป็นจำนวนเฉพาะของจำนวนเต็มใดๆ จะมีค่าน้อยกว่าหรือเท่ากับรากที่สองของจำนวนเต็มนั้น จากตัวอย่างให้ N=123456789123 ใช้วิธีการแยกตัวประกอบของแฟร์มาต์ ได้ดังนี้

 
 
 
 
 

จริงๆแล้วจะเห็นว่าเราทำมาได้ 4 ขั้นตอนแล้วแต่ยังไม่ได้ตัวประกอบเพราะว่า b2=1637.77 ไม่ใช่จำนวนเต็มแต่เมื่อเราคำนวณ a-b2 จะได้ว่า 357368-1638=349730 ถ้าอาศัยทฤษฎีของการหารเชิงทดลองจะได้ว่าการที่จะหาตัวประกอบเฉพาะของ N ทำได้จากการทดลองหาจาก 0 ถึง 351365 (จาก การหารเชิงทดลอง) แต่กรณีนี้หลังจากที่เราทำการแยกตัวประกอบของแฟร์มาต์ยังไม่เสร็จแต่เราจะได้ว่า เราทำหาการหารเชิงทดลองโดยหาแค่จาก 0 ถึง 349730 พอซึ่งสามารถลดจากเดิมได้เป็นพันรอบโดยแค่ทำการหาตัวประกอบแบบแฟร์มาต์แค่ 4 รอบก่อน ซึ่งจากตัวอย่างด้านบนจะเห็นว่าสามารถหาค่าแล้วได้ b2 ออกมาเลื่อยๆทำให้ยิ่งเข้าใกล้ค่าตัวประกอบจริงมากขึ้นและยิ่งทำให้เมื่อนำไปหาการหารเชิงทดลองต่อมีแนวโน้มที่จะได้ประสิทธิภาพที่ดีขึ้น

ดังนั้นจึงสามารถเขียนในรูปของความสัมพันธ์ทั่วไป ถ้าเราให้   จะได้ว่าถ้าเราใช้ การแยกตัวประกอบของแฟร์มาต์ในช่วงระหว่าง   กับ   จะทำให้ได้ขอบเขตของการหาในวิธีการหารเชิงทดลองคือ   ตัวอย่างเช่นถ้า N=2345678917 โดยให้ d=48436 จะได้ขอบเขตของการหารเชิงทดลองคือ 47830 และถ้ากำหนดให้ d=55000 จะได้ขอบเขตคือ 28937

การปรับปรุงกับตะแกรง

บ้างครั้งเราไม่มีความจำเป็นที่จะต้องหา รากที่สองของ   หรือแม้แต่ค่าของ a ทุกค่าเราสามารถพิจารณาได้จากค่า มอดุโล ของมันเช่นจากตัวอย่าง

a: 4843348434 48435 48436
b2: 76572173439270308367179
b: 276.7416.5 519.9 605.9

กรณีดังกล่าวจะเห็นได้ว่าไม่มีค่า b หรือรากที่สองของ b2 เป็นจำนวนเต็ม. จากสมการ   เมื่อพิจารณาค่า  เมื่อ a เป็นจำนวนเต็ม จากตัวอย่างดังนี้

n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400

จะเห็นได้ว่ากำลังสองของเลขจำนวนเต็มมักจะลงท้ายด้วย 0,1,4,5,9,16 modulo 20. จากตารางด้านบนจะพบว่าค่าที่ a mod 10 มีค่าเดียวกันยกจำลังสองแล้วจะได้เลขลงท้ายค่าเดียวกันเท่ากันด้วย หรือจะเรียกได้ว่าจะซ้ำรอบเดิมเมื่อ a ถูกเพิ่มเป็น 10 จากตัวอย่างดังกล่าวจะได้ว่าถ้าเราเพิ่ม -17 mod 20 (3),   จะได้เลขลงท้ายดังกล่าวออกมาเป็น 3,4,7,8,12,19 modulo 20 จะเห็นว่ามี 4 จากรายการนี้ที่สามารถเป็นกำลังสองได้ (เทียบอันดับกันของ   และ  ) ดังนั้น   ต้องเป็น 1 mod 20 หรือหมายถึง a คือ 1,9 mod 10 ซึ่งจะทำให้ b2 ลง ท้ายด้วย 4 mod 20 และ ถ้าเป็นกำลังสองอีก b จะลงท้ายด้วย 2,8 mod 10

ตัวอย่างของการใช้ มอดุลัส ค่าต่าง ของ N=2345678917

มอดุโล 16:กำลังสองคือ 0, 1, 4, or 9
N mod 16 is5
ดังนั้น   สามารถเป็นได้คือ 9
และ   ต้องเป็น 3 , 5 modulo 16
มอดุโล 9: กำลังสองคือ 0, 1, 4, or 7
N mod 9 is7
ดังนั้น  สามารถเป็นได้คือ7
และ   ต้องเป็น4 , 5 modulo 9

โดยทั่วไปจะเลือกค่าที่เป็นกำลังของจำนวนเฉพาะที่แตกต่างกันสำหรับ มอดุลัส เมื่อให้ลำดับของ a-value(start,end,and step) และค่าค่า modulus ซึ่งจะมีกระบวนการได้ดังนี้

รหัสเทียม
FermatSieve(N, astart, aend, astep, modulus) a ← astart do modulus times: b2 ← a*a - N if b2 is a square, modulo modulus: FermatSieve(N, a, aend, astep * modulus, NextModulus) endif a ← a + astep enddo 

การปรับปรุงตัวคูณ กับวิธีการของเลห์แมน

วิธีการของแฟร์มาต์จะทำงานได้ดีเมื่อตัวประกอบนั้นอยู่ใกล้กับค่า รากที่สองของ N ซึ่งเราอาจจะจัดการให้สิ่งนั้นเกิดขึ้นได้ ถ้ารู้ค่าอัตราส่วนโดยประมาณของ d/c โดยกำหนดให้ N แยกตัวประกอบได้ N = cd แล้ว สามารถเลือกอัตราส่วนจำนวน v/u ที่ใกล้กับค่านั้น แล้วประมาณได้ว่า N*u*v = (c*v)*(d*u) ซึ่งทำให้ใช้เมื่อวิธีของแฟร์มาต์จทำให้สามารถหาในรูป N=N*u*v ได้เร็วกว่า จากนั้นหาตัวหารร่วมมาก ของ factor ที่ได้กับ N เดิม จะได้ gcd(N,vc)= c และ gcd(N,du)=d (เว้น c หาร u หรือ d หาร v ลงตัว)

โดยปกติเราไม่สามารถรู้ค่าอัตราส่วนนั้นได้แต่ถ้าเลือกหนึ่งคือพยายามลอง u/v หลายๆค่า และพยายาแยกตัวประกอบกับ Nuv ดังกล่าวซึ่งได้มีนักคณิตศาสตร์ท่าหนึ่ง อาร์ เลห์แมน (R. Lehman)ได้คิดค้นระเบียบวิธีการที่เป็นระบบไว้สำหรับแก้ปัญหาด้วยแนวคิดนี้ ซึ่งสามารถเพิ่มประสิทธิภาพให้ การแปลงแบบแฟร์มาต์ที่เพิ่มวิธีการหารเชิงทดลอง ให้สามารถแยกตัวประกอบของ N ได้ในเวลา O(N1 / 3)ในบทความชื่อว่า การแยกตัวประกอบจำนวนเต็มขนาดใหญ่ (R. Lehman, "Factoring Large Integers", Mathematics of Computation)
วิธีการดูเหมือนกับการแยกตัวประกอบของแฟร์มาต์ โดยให้   และ   ตรวจสอบว่า  คือกำลังสองสำหรับ   จากนั้นเราแค่จำเป็นต้องตรวจสอบ   และ m สำหรับแต่ละ   เพื่อหาตัวประกอบที่   จะเห็นว่าวิธีนี้ใช้เวลาเป็น   เราสามารถพิสูจน์ขั้นตอนเหล่านี้ได้โดยใช้วิธีการทั่วไปของ การประมาณปกติ(normal approximation)
รหัสเทียม
 Check that N has no divisors <= N^(1/3). //ตรวจสอบว่าไม่มีตัวหารตามเงื่อนไข For 1 <= t <= N^(1/3): Let k = ceil (sqrt (4tN)) For 0 <= m <= sqrt (N^(1/3) / t) Check whether (k+m)^2 - 4tN is a square. //ตรวจสอบว่าเป็นกำลังสอง If it is a square -> calculate two factors. //ถ้าเป็นให้คำนวณตัวประกอบ 2 ตัว 

ประสิทธิภาพของรหัสเทียมดังกล่าวคือ  

สรุปและการประยุกต์อื่นๆ

การแยกตัวประกอบของแฟร์มาต์เป็นวิธีหนึ่งที่ใช้ในการแยกตัวประกอบของจำนวนเต็มโดยใช้สมบัติของผลต่างกำลังสองที่เป็นจำนวนเต็มวิธีพื้นฐานปกติจะมีประสิทธิภาพที่ไม่ดีนักไม่ต่างกับการค้นหาจำนวนเต็มทุกตัวจาก 1 ถึง N (   ) แต่จะมีประสิทธิภาพสูงถ้าคำตอบเข้าใกล้รากที่สองของ N และสามารถนำคุณสมบัติทางคณิตศาสตร์นี้ไปประยุกต์หรือปรับปรุงกับวิธีอื่นเช่น การหารเชิงทดลอง ทำให้เห็นว่าได้ประสิทธิภาพที่ดีกว่าการใช้ตัวใดตัวหนึ่งโดยอาศัยการแยกตัวประกอบของแฟร์มาต์มาใช้ลดช่วงของการค้น หรือประยุกต์กับวิธีของเลห์แมน ดังที่ได้กล่าวไปที่ทำให้ได้ประสิทธิภาพเป็น   โดยอาศัยสมบัติการความมีประสิทธิภาพสูงเมื่อเข้าใกล้รากที่สองของ N นอกจากนั้นยังเป็นรากฐานของเรื่อง ตะแกรงกำลังสอง(quadratic sieve) และ การกรองตัวเลขในขอบเขตแบบธรรมดา(general number field sieve)ซึ่งเป็นระเบียบวิธีการที่รู้จักดีสำหรับการแยกตัวประกอบ "กรณีที่แย่ที่สุด" จำนวนกึ่งเฉพาะขนาดใหญ่ ในขั้นตอน วิธีการของตะแกรงกำลังสอง ที่แตกต่างกับการแยกตัวประกอบของแฟร์มาต์คือ แทนที่จะหา ว่า  เป็นกำลังสองหรือไม่เป็นลำดับ แต่จะหาเซตย่อยของส่วนประกอบของลำดับดังกล่าวที่คูณกัน ที่เป็นกำลังสอง ซึ่งสุดท้ายจะได้ผลที่เหมือนกับผลต่างกำลังสอง mod n ถ้าค่าดังกล่าวเป็นผลไม่ชัด(nontrivial) สามารถนำไปใช้แยกตัวประกอบของ N ต่อได้ นอกจากนี้ยังมีการนำไปใช้อีกมากมายที่ยังไม่ได้กล่าวถึงเช่น วิธีแยกตัวประกอบของดิกสัน เป็นต้น

อ้างอิง

  • Fermat's Factorization Method in MathWorld von Wolfram Research.
  • J. McKee, "Speeding Fermat's factoring method", Mathematics of Computation, 68:1729-1737 (1999).
  • Generalized Trial Division Murat S¸AHÿIN Int. J. Contemp. Math. Sciences, Vol. 6, 2011, no. 2, 59 - 64
  • R. Lehman, "Factoring Large Integers", Mathematics of Computation

แหล่งข้อมูลอื่น

  • Java Implementation Of Fermat's method and trial division

นตอนว, การแยกต, วประกอบของจำนวนเต, มของแฟร, มาต, แยกต, วประกอบของแฟร, มาต, งกฤษ, fermat, factorization, method, งช, อตามผ, ดค, นค, แยร, เดอ, แฟร, มาต, pierre, fermat, โดยเป, นผลงานหน, งท, เก, ยวก, บทฤษฎ, จำนวน, ใช, ในการแยกต, วประกอบโดยม, หล, กการท, จำนวนเต, ม. withiaeyktwprakxbkhxngaefrmat xngkvs Fermat s factorization method tngchuxtamphukhidkhnkhux piaeyr edx aefrmat Pierre de Fermat odyepnphlnganhnungthiekiywkbthvsdicanwn thiichinkaraeyktwprakxbodymihlkkarthiwa canwnetmkhiid samarthaethniddwyphltangkhxngelkhkalngsxngiddngni N x 2 y 2 displaystyle N x 2 y 2 cakkarsngektni thaihsamarthnaipprayuktin taaekrngkalngsxng quadratic sieve aela withiaeyktwprakxbkhxngdiksn Dixon s Factorization Method caksmbtidngklawsamarthmxngidwa N a b x y x y displaystyle N ab x y x y odythi a gt b displaystyle a gt b tha a hrux b imethakb 1 aesdngwa a kb b epntw prakxbaethkhxng N samarthekhiynaeykid a x y displaystyle a x y b x y displaystyle b x y hrux a b 2 x displaystyle a b 2x a b 2 y displaystyle a b 2y dngnn N a b x 2 y 2 1 4 a b 2 a b 2 a b 2 2 a b 2 2 displaystyle N ab x 2 y 2 1 4 a b 2 a b 2 a b 2 2 a b 2 2 enuxngcak N epncanwnetmkhi aelw a aela b epncanwnkhidwy dngnncaidthngsxngswnkhxngsmkarepncanwnetmaelayngekhiynidwa x 2 y 2 m o d N displaystyle x 2 equiv y 2 modN caksmbtiehlanicanamaichaeyktwprakxbcanwnetm emuxethiybkb karharechingthdlxng trial division aelwwithinixaccamiprasiththiphaphnxykwa aetemuxnathng withikaraeyktwprakxbkhxngaefrmat kbkarharechingthdlxng marwmknaelwcathaihidprasiththiphaphthimakkwakarichwithiidwithihnung enuxha 1 withikarebuxngtn 1 1 rhs 1 2 hlkkarebuxngtn 1 3 khntxntwxyang 2 prasiththiphaph 3 karprayuktwithikhxngaefrmatkbkarharechingthdlxng 4 karprbprungkbtaaekrng 5 karprbprungtwkhun kbwithikarkhxngelhaemn 6 srupaelakarprayuktxun 7 xangxing 8 aehlngkhxmulxunwithikarebuxngtn aekikhcakthvsdikhangtnhakha a thithaih b 2 a 2 N displaystyle b2 a 2 N samarthykkalngsxngepncanwnetmidwithikardngklawsamarthekhiynrhsethiymiddngni rhs aekikh FermatFactor N N khwrcaepncanwnkhi a ceil sqrt N b2 a a N while b2 isn t a square a a 1 smmulkb b2 b2 2 a 1 b2 a a N a a 1 endwhile return a sqrt b2 hrux a sqrt b2 twxyangrhsthisrangodyphasa C int FermatFactor int N int a ceil sqrt N int b2 a a N while sqrt b2 int sqrt b2 gt 0 withikartrwcsxbrakthisxngwaepncanwnetmhruxim xaccayngimdiethaihraetkphxichid a b2 a a N return a sqrt b2 hlkkarebuxngtn aekikh hlkkarkhuxtxngkaraeyktwprakxbkhxng N sung N khwrepncanwnkhithahakepncanwnkhusamarthaeyktwprakxb 2 xxkipkxn caknnhatwprakxbodyhakha a aela b thiepncanwnetmnxythisudthi a b N a b displaystyle a b leq sqrt N leq a b odythi a b N a b displaystyle a b N a b aelathaaeyktwprakxbid N N 1 caidwa N epncanwnechphaa odythdsxbthilaenguxnikhaelabwkkha a ephimkhuneluxycnphbkhatxbthiidtwprakxbluekharakkhxng N makthisud twxyangechn N 5959 a 78 79 80b2 125 282 441khntxntwxyang aekikh 1 erimtnodyha a 5959 78 displaystyle a lceil sqrt 5959 rceil 78 caid b2 1252 trwcsxb b2 wasamarthharakidepncanwnetmhruxim enuxngcak b2 125 harakidpraman 11 18 imichcanwnetmcungephimkha a epn 79 aelwhatxid b 2 79 2 5959 282 displaystyle b2 79 2 5959 282 aelwthasakhntxnthi 2 xikrxbcnkwacasamarthharakidepncanwnetmihipthakhntxnthi 33 emuxthama 3 khrngcaid a 80 aela b2 441 sungsamarthharakid 21 dngnncaidwa a b 59 displaystyle a b 59 and a b 101 displaystyle a b 101 sung id 59 aela 101 epntwprakxbkhxng 5959prasiththiphaph aekikhemuxih N c d displaystyle N cd caidwacanwnkhrnginkarwnlupkhux c d 2 N d c 2 2 N c 2 2 c displaystyle c d 2 sqrt N sqrt d sqrt c 2 2 sqrt N c 2 2c khxngkrnithiaeythisudkhuxemux N epncanwnechphaa sungcaidprasiththiphaphkarthanganepn O N displaystyle O N aetthakrnithi c tangkb rakkhxng N nxykwa 4 N 1 4 displaystyle left 4N right 1 4 thaichcanwnkarthanganaekhkhrngediyw hruxthakhatxbcringyingekhaip rakkhxng N makethaihrprasiththiphaphinthangptibtikcadikhun sungcakthnghmdaesdngihehnwaprasiththiphaphkhxngwithiaeyktwprakxbkhxngaefrmatcakhunxyukbkhakhxng Nkarprayuktwithikhxngaefrmatkbkarharechingthdlxng aekikhcakwithikhxngaefrmatcaehnwaidprasiththiphaphkhux O N displaystyle O N emuxethiybkb withikarharechingthdlxngthiidprasiththiphaphthidikwakhux O n log n sungcaehn dngnnerasamarthephimprasiththiphaphihkb withikarhatwprakxbthngsxngihdikhunidodynathngsxngwithimarwmknodyichwithikarhatwprakxbkhxngaefrmatepnhlk aelaichwithikarharechingthdlxngtdkrnithiichphicarnamakid cak thvstikarharechingthdlxng twprakxbthiepncanwnechphaakhxngcanwnetmid camikhanxykwahruxethakbrakthisxngkhxngcanwnetmnn caktwxyangih N 123456789123 ichwithikaraeyktwprakxbkhxngaefrmat iddngni N 351365 displaystyle lceil sqrt N rceil 351365 351365 2 N 574102 574102 757 7 displaystyle 351365 2 N 574102 sqrt 574102 757 7 351366 2 N 1276833 1276833 1129 97 displaystyle 351366 2 N 1276833 sqrt 1276833 1129 97 351367 2 N 1979566 1979566 1406 97 displaystyle 351367 2 N 1979566 sqrt 1979566 1406 97 351368 2 N 2682301 2682301 1637 77 displaystyle 351368 2 N 2682301 sqrt 2682301 1637 77 cringaelwcaehnwaerathamaid 4 khntxnaelwaetyngimidtwprakxbephraawa b2 1637 77 imichcanwnetmaetemuxerakhanwn a b2 caidwa 357368 1638 349730 thaxasythvsdikhxngkarharechingthdlxngcaidwakarthicahatwprakxbechphaakhxng N thaidcakkarthdlxnghacak 0 thung 351365 cak karharechingthdlxng aetkrninihlngcakthierathakaraeyktwprakxbkhxngaefrmatyngimesrcaeteracaidwa erathahakarharechingthdlxngodyhaaekhcak 0 thung 349730 phxsungsamarthldcakedimidepnphnrxbodyaekhthakarhatwprakxbaebbaefrmataekh 4 rxbkxn sungcaktwxyangdanbncaehnwasamarthhakhaaelwid b2 xxkmaeluxythaihyingekhaiklkhatwprakxbcringmakkhunaelayingthaihemuxnaiphakarharechingthdlxngtxmiaenwonmthicaidprasiththiphaphthidikhun dngnncungsamarthekhiyninrupkhxngkhwamsmphnththwip thaeraih d gt N displaystyle d gt sqrt N caidwathaeraich karaeyktwprakxbkhxngaefrmatinchwngrahwang N displaystyle sqrt N kb d displaystyle d cathaihidkhxbekhtkhxngkarhainwithikarharechingthdlxngkhux d d 2 N displaystyle d sqrt d 2 N twxyangechntha N 2345678917 odyih d 48436 caidkhxbekhtkhxngkarharechingthdlxngkhux 47830 aelathakahndih d 55000 caidkhxbekhtkhux 28937karprbprungkbtaaekrng aekikhbangkhrngeraimmikhwamcaepnthicatxngha rakthisxngkhxng a 2 N displaystyle a 2 N hruxaemaetkhakhxng a thukkhaerasamarthphicarnaidcakkha mxduol khxngmnechncaktwxyang a 4843348434 48435 48436b2 76572173439270308367179b 276 7416 5 519 9 605 9krnidngklawcaehnidwaimmikha b hruxrakthisxngkhxng b2 epncanwnetm caksmkar a 2 N displaystyle a 2 N emuxphicarnakha a 2 displaystyle a 2 emux a epncanwnetm caktwxyangdngni n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20n 2 displaystyle n 2 1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400caehnidwakalngsxngkhxngelkhcanwnetmmkcalngthaydwy 0 1 4 5 9 16 modulo 20 caktarangdanbncaphbwakhathi a mod 10 mikhaediywknykcalngsxngaelwcaidelkhlngthaykhaediywknethakndwy hruxcaeriykidwacasarxbedimemux a thukephimepn 10 caktwxyangdngklawcaidwathaeraephim 17 mod 20 3 a 2 N displaystyle a 2 N caidelkhlngthaydngklawxxkmaepn 3 4 7 8 12 19 modulo 20 caehnwami 4 cakraykarnithisamarthepnkalngsxngid ethiybxndbknkhxng a 2 displaystyle a 2 aela a 2 N displaystyle a 2 N dngnn a 2 displaystyle a 2 txngepn 1 mod 20 hruxhmaythung a khux 1 9 mod 10 sungcathaih b2 lng thaydwy 4 mod 20 aela thaepnkalngsxngxik b calngthaydwy 2 8 mod 10twxyangkhxngkarich mxduls khatang khxng N 2345678917 mxduol 16 kalngsxngkhux 0 1 4 or 9N mod 16 is5dngnn a 2 displaystyle a 2 samarthepnidkhux9aela a displaystyle a txngepn3 5 modulo 16mxduol 9 kalngsxngkhux 0 1 4 or 7N mod 9 is7dngnn a 2 displaystyle a 2 samarthepnidkhux7aela a displaystyle a txngepn4 5 modulo 9odythwipcaeluxkkhathiepnkalngkhxngcanwnechphaathiaetktangknsahrb mxduls emuxihladbkhxng a value start end and step aelakhakha modulus sungcamikrabwnkariddngni rhsethiymFermatSieve N astart aend astep modulus a astart do modulus times b2 a a N if b2 is a square modulo modulus FermatSieve N a aend astep modulus NextModulus endif a a astep enddokarprbprungtwkhun kbwithikarkhxngelhaemn aekikhwithikarkhxngaefrmatcathanganiddiemuxtwprakxbnnxyuiklkbkha rakthisxngkhxng N sungeraxaccacdkarihsingnnekidkhunid tharukhaxtraswnodypramankhxng d c odykahndih N aeyktwprakxbid N cd aelw samartheluxkxtraswncanwn v u thiiklkbkhann aelwpramanidwa N u v c v d u sungthaihichemuxwithikhxngaefrmatcthaihsamarthhainrup N N u v iderwkwa caknnhatwharrwmmak khxng factor thiidkb N edim caid gcd N vc c aela gcd N du d ewn c har u hrux d har v lngtw odypktieraimsamarthrukhaxtraswnnnidaetthaeluxkhnungkhuxphyayamlxng u v hlaykha aelaphyayaaeyktwprakxbkb Nuv dngklawsungidminkkhnitsastrthahnung xar elhaemn R Lehman idkhidkhnraebiybwithikarthiepnrabbiwsahrbaekpyhadwyaenwkhidni sungsamarthephimprasiththiphaphih karaeplngaebbaefrmatthiephimwithikarharechingthdlxng ihsamarthaeyktwprakxbkhxng N idinewla O N1 3 inbthkhwamchuxwa karaeyktwprakxbcanwnetmkhnadihy R Lehman Factoring Large Integers Mathematics of Computation withikarduehmuxnkbkaraeyktwprakxbkhxngaefrmat odyih k 1 displaystyle k geq 1 aela x 2 k N displaystyle x lceil 2 sqrt kN rceil trwcsxbwa x m 2 4 k N displaystyle x m 2 4kN khuxkalngsxngsahrb m 0 displaystyle m geq 0 caknneraaekhcaepntxngtrwcsxb k N 1 3 displaystyle k leq N 1 3 aela m sahrbaetla m 2 k N 1 3 displaystyle m 2 k leq N 1 3 ephuxhatwprakxbthi gt N 1 3 displaystyle gt N 1 3 caehnwawithiniichewlaepn O N 1 3 displaystyle O N 1 3 erasamarthphisucnkhntxnehlaniidodyichwithikarthwipkhxng karpramanpkti normal approximation rhsethiymCheck that N has no divisors lt N 1 3 trwcsxbwaimmitwhartamenguxnikh For 1 lt t lt N 1 3 Let k ceil sqrt 4tN For 0 lt m lt sqrt N 1 3 t Check whether k m 2 4tN is a square trwcsxbwaepnkalngsxng If it is a square gt calculate two factors thaepnihkhanwntwprakxb 2 tw prasiththiphaphkhxngrhsethiymdngklawkhux O N 1 3 displaystyle O N 1 3 srupaelakarprayuktxun aekikhkaraeyktwprakxbkhxngaefrmatepnwithihnungthiichinkaraeyktwprakxbkhxngcanwnetmodyichsmbtikhxngphltangkalngsxngthiepncanwnetmwithiphunthanpkticamiprasiththiphaphthiimdinkimtangkbkarkhnhacanwnetmthuktwcak 1 thung N O n displaystyle O n aetcamiprasiththiphaphsungthakhatxbekhaiklrakthisxngkhxng N aelasamarthnakhunsmbtithangkhnitsastrniipprayukthruxprbprungkbwithixunechn karharechingthdlxng thaihehnwaidprasiththiphaphthidikwakarichtwidtwhnungodyxasykaraeyktwprakxbkhxngaefrmatmaichldchwngkhxngkarkhn hruxprayuktkbwithikhxngelhaemn dngthiidklawipthithaihidprasiththiphaphepn O N 1 3 displaystyle O N 1 3 odyxasysmbtikarkhwammiprasiththiphaphsungemuxekhaiklrakthisxngkhxng N nxkcaknnyngepnrakthankhxngeruxng taaekrngkalngsxng quadratic sieve aela karkrxngtwelkhinkhxbekhtaebbthrrmda general number field sieve sungepnraebiybwithikarthiruckdisahrbkaraeyktwprakxb krnithiaeythisud canwnkungechphaakhnadihy inkhntxn withikarkhxngtaaekrngkalngsxng thiaetktangkbkaraeyktwprakxbkhxngaefrmatkhux aethnthicaha waa 2 n displaystyle a 2 n epnkalngsxnghruximepnladb aetcahaestyxykhxngswnprakxbkhxngladbdngklawthikhunkn thiepnkalngsxng sungsudthaycaidphlthiehmuxnkbphltangkalngsxng mod n thakhadngklawepnphlimchd nontrivial samarthnaipichaeyktwprakxbkhxng N txid nxkcakniyngmikarnaipichxikmakmaythiyngimidklawthungechn withiaeyktwprakxbkhxngdiksn epntnxangxing aekikhFermat s Factorization Method in MathWorld von Wolfram Research J McKee Speeding Fermat s factoring method Mathematics of Computation 68 1729 1737 1999 Generalized Trial Division Murat S AHyIN Int J Contemp Math Sciences Vol 6 2011 no 2 59 64 R Lehman Factoring Large Integers Mathematics of Computationaehlngkhxmulxun aekikhJava Implementation Of Fermat s method and trial divisionekhathungcak https th wikipedia org w index php title khntxnwithikaraeyktwprakxbkhxngcanwnetmkhxngaefrmat amp oldid 8541557, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม