การแยกตัวประกอบจำนวนเต็ม

ในทฤษฎีจำนวน การแยกตัวประกอบจำนวนเต็ม (integer factorization) หรือ การแยกตัวประกอบเฉพาะ (prime factorization) คือการแบ่งย่อยจำนวนประกอบออกเป็นตัวหารไม่ชัด (ตัวหารที่ไม่ใช่ 1 กับ ตัวมันเอง) หลาย ๆ ตัว ซึ่งเมื่อคูณตัวหารไม่ชัดเหล่านั้นเข้าด้วยกันจะได้ผลลัพธ์ดังเดิม
เมื่อจำนวนมีขนาดใหญ่มาก ไม่มีขั้นตอนวิธีการแยกตัวประกอบของจำนวนเต็มใด ๆ ที่มีประสิทธิภาพเพียงพอ ในปี 2009 ความพยายามในการแยกตัวประกอบของเลข 232 หลัก ได้สำเร็จลง จากการใช้เครื่องจักรมากกว่า 100 เครื่องภายในระยะเวลา 2 ปี ความยากของปัญหาแหละนี้คือหัวใจของขั้นตอนวิธีบางอย่างในวิทยาการเข้ารหัสลับ เช่น RSA
จำนวนที่มีความยาวเท่ากัน ใช่ว่าจะแยกตัวประกอบด้วยความยากเท่ากัน กรณีที่ยากที่สุดของปัญหาเหล่านี้ (สำหรับกลวิธีที่รู้กันในปัจจุบัน) คือจำนวนครึ่งเฉพาะ (semiprime) ซึ่งก็คือจำนวนที่เป็นผลคูณของจำนวนเฉพาะ 2 ตัว
จากทฤษฎีบทมูลฐานของเลขคณิต จำนวนเต็มบวกทุกตัวจะมีการแยกตัวประกอบเฉพาะที่แตกต่างกัน

**ความยากและความซับซ้อน**
ถ้าจำนวน b บิตเป็นผลคูณของจำนวนเฉพาะ 2 ตัวที่มีขนาดใกล้เคียงกันแล้ว จะไม่มีขั้นตอนวิธีใด ๆ ที่สามารถแยกตัวประกอบมันได้ภายในเวลาแบบพหุนาม (polynomial time) กล่าวคือ ไม่สามารถแยกตัวประกอบได้ภายใน O (bk) เมื่อ k คือค่าคงที่ค่าหนึ่ง ปัจจุบันมีขั้นตอนวิธีหลายขั้นตอนที่เร็วกว่า O ((1+ε) b) เมื่อ ε คือจำนวนบวก กล่าวคือ มีประสิทธิภาพเชิงเวลาแบบใต้เลขชี้กำลัง (sub-exponential)
ขั้นตอนวิธีที่มีเวลาการทำงานเชิงเส้นกำกับที่ดีที่สุดคือ การกรองตัวเลขในขอบเขตแบบธรรมดา (general number field sieve (GNFS)) สำหรับจำนวน b บิตจะมีความซับซ้อนเป็น
: 
สำหรับคอมพิวเตอร์ทั่วไป การกรองตัวเลขในขอบเขตแบบธรรมดา (GNFS) คือขั้นตอนวิธีที่ดีที่สุดสำหรับจำนวนขนาดใหญ่มาก ๆ (เลข 100 หลักขึ้นไป) แต่สำหรับควอนตัมคอมพิวเตอร์ ปีเตอร์ ชอร์ ได้ค้นพบขั้นตอนวิธีที่สามารถแก้ปัญหาได้ในเวลาแบบพหุนามในปี พ.ศ. 2537 ขั้นตอนวิธีของชอร์ใช้เวลาการทำงานเพียงแค่ O (b3) และใช้ปริภูมิ O (b) สำหรับจำนวน b บิต

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

**ขั้นตอนวิธีการแยกตัวประกอบต่าง ๆ**

**วัตถุประสงค์เฉพาะ**
เวลาการทำงานขึ้นอยู่กับคุณสมบัติของจำนวนที่จะแยกตัวประกอบ ตัวอย่างเช่น ขั้นตอนวิธีทดลองการหาร ถูกจัดเข้าหมวดวัตถุประสงค์เฉพาะ เพราะว่าเวลาการทำงานเป็นสัดส่วนตามขนาดของตัวประกอบที่เล็กที่สุด- การหารเชิงทดลอง- ขั้นตอนวิธีโรห์ของพอลลาร์ด- ขั้นตอนวิธีพีลบหนึ่งของพอลลาร์ด

**วัตถุประสงค์ทั่วไป**
เวลาการทำงานขึ้นอยู่กับขนาดของจำนวนเต็มที่จะทำการแยกตัวประกอบเพียงลำพัง- ตะแกรงกำลังสอง- การกรองตัวเลขในขอบเขตแบบธรรมดา

**ขั้นตอนวิธีที่มีชื่อเสียงอื่น ๆ**
 ขั้นตอนวิธีของชอร์

**อ้างอิง**
 โดนัลด์ คนูธ. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89684-2. Section 4.5.4: Factoring into Primes, pp. 379–417.- cite book|author = Richard Crandall and Carl Pomerance | year = 2001 | title = Prime Numbers: A Computational Perspective |url = https://archive.org/details/primenumberscomp0000cran | publisher = Springer | edition = 1st | isbn = 0-387-94777-9 Chapter 5: Exponential Factoring Algorithms, pp. 191–226. Chapter 6: Subexponential Factoring Algorithms, pp. 227–284. Section 7.4: Elliptic curve method, pp. 301–313.

**แหล่งข้อมูลอื่น**
  A collection of links to factoring programs date=2011-09-27 - Richard P. Brent, "Recent Progress and Prospects for Integer Factorisation Algorithms", Computing and Combinatorics", 2000, pp. 3-22.  download- Manindra Agrawal, Neeraj Kayal, Nitin Saxena, "PRIMES is in P." Annals of Mathematics 160 (2) : 781-793 (2004).  August 2005 version PDF- fix-attempted=yes  is a public-domain integer factorization program for Windows. It claims to handle 80-digit numbers. See also the web site for this program  MIRACL date=2011-09-30 -  The RSA Challenge Numbers date=2006-12-09  - a factoring challenge, no longer active.- Eric W. Weisstein,  “RSA-640 Factored” MathWorld Headline News, November 8, 2005-  Qsieve, a suite of programs for integer factorization. It contains several factorization methods like Elliptic Curve Method and MPQS.-  Source code by Paolo Ardoino date=2012-03-14 , Three known algorithms and C source code.-  Factorization Source Code: by Paul Herman & Ami Fischman, C++ source code for many factorization algorithms including Pollard Rho & Shor's.- a  database containing factorizations, complete and incomplete, of over 80 million numbers.
หมวดหมู่:ขั้นตอนวิธีการแยกตัวประกอบจำนวนเต็ม