ตะแกรงกำลังสอง

ขั้นตอนวิธีตะแกรงกำลังสอง () เป็นหนึ่งในขั้นตอนวิธีในการแยกตัวประกอบของจำนวนเต็มให้อยู่ในรูปของผลคูณของเลขยกกำลังของจำนวนเฉพาะซึ่งยังเป็นสิ่งที่น่าสนใจเนื่องจากมีการนำไปใช้ในการเข้ารหัส (โดยถ้าใช้บางขั้นตอนวิธีอาจจะต้องใช้เวลามากกว่าอายุของจักรวาลเสียอีก) Carl Pomerance เป็นผู้ค้นพบขั้นตอนวิธีนี้ในปี ค.ศ. 1981 จากการปรับขั้นตอนวิธีตะแกรงเชิงเส้นของชโรโพล (Schroeppel's linear sieve) ซึ่งใช้ในการแก้ปัญหาเดียวกัน โดยเป็นขั้นตอนวิธีที่สามารถแยกตัวประกอบได้เร็วที่สุดสำหรับจำนวนเต็มที่มีจำนวนหลักน้อยกว่าเท่ากับ 100 หลัก แต่ในกรณีถัวเฉลี่ยของจำนวนเต็มใดๆ นั้นจะพบว่า ขั้นตอนวิธีดังกล่าวเป็นขั้นตอนวิธีที่สามารถแยกตัวประกอบได้เร็วเป็นอันดับสองรองจากตะแกรงของเขตข้อมูลจำนวนเต็มทั่วไป (general number field sieve) ซึ่งจะพบว่าขั้นตอนวิธีแบบตะแกรงกำลังสองนั้นสามารถเข้าใจได้ง่าย เวลาที่ใช้ในการคำนวณนั้นขึ้นอยู่กับขนาดของจำนวนเต็มที่จะนำมาแยกตัวประกอบ โดยไม่ขึ้นกับโครงสร้างและคุณสมบัติของตัวเลขมากนัก

จากดังกล่าวจะพบว่าขั้นตอนวิธีตะแกรงกำลังสองนั้นเป็นขั้นตอนวิธีที่พยายามใช้พื้นฐานของขั้นตอนวิธีในการแก้ปัญหาคอนกรูเอนซ์ของจำนวนเต็มยกกำลังสองมอดุลโลเอ็น (congruence of squares mod "n") ซึ่งขั้นตอนวิธีดังกล่าวได้ถูกนำไปในใช้ในการแก้ปัญหาการแยกตัวประกอบของจำนวนเต็มหลากหลายขั้นตอนวิธี รวมถึงขั้นตอนวิธีตะแกรงกำลังสองเอง โดยเราจะพิจารณาแบ่งขั้นตอนวิธีนี้ออกเป็นสองส่วนคือ การเก็บสะสมข้อมูล ("data collection") ซึ่งจะเก็บข้อมูลที่มีโอกาสทำให้เกิดการคอนกรูเอ็นกำลังสองเพื่อเตรียมไปประมวลผล หลังจากนั้นพิจารณาทำให้ส่วนที่สองที่เป็นการนำข้อมูลมาประมวลผล ("data processing") ซึ่งจะนำข้อมูลที่เก็บมาใส่เมทริกซ์แล้วพิจารณาคำนวณค่าเพื่อหาคำตอบ จนกระทั่งพบการเกิดคอนกรูเอ็นกำลังสองจริงๆ ในส่วนแรกนั้นเราสามารถทำได้โดยใช้ระบบคู่ขนานของระบบประมวลผลของคอมพิวเตอร์ แต่ในส่วนที่สองนั้นจะต้องไปยุ่งเกี่ยวกับหน่วยความจำเนื่องจากต้องจองพื้นที่สำหรับการสร้างเมทริกซ์ ซึ่งอาจจะต้องใช้ ขั้นตอนวิธีกล่องวีดด์แมนน์ (block Wiedemann algorithm) เข้าช่วยในการทำให้การทำงานส่วนที่สองมีประสิทธิภาพมากยิ่งขึ้นในการระบบสามารถที่จะเก็บเมทริกซ์ได้

จะพบว่าขั้นตอนวิธีตะแกรงแบบยกกำลังสองนั้นมีการดัดแปลงมาจากขั้นตอนวิธีการแยกตัวประกอบของดิกสัน
โดยเวลาในการรันสำหรับขั้นตอนวิธีตะแกรงกำลังสองสำหรับการแยกตัวประกอบจำนวนเต็ม "n" ใด คือ
ในสัญลักษณ์ของ L (L-notation) 
โดย "e" คือค่าที่นิยมใช้เป็นฐานของลอการิทึม

ขั้นตอนวิธีดังกล่าวมีแนวความคิดมาจากขั้นตอนวิธีการแยกตัวประกอบของจำนวนเต็มของแฟร์มาต์ (Fermat's factorization method) โดยพิจารณาจาก ทฤษฎีบทที่ว่าถ้าพิจารณาให้ "n" เป็นจำนวนคี่แล้วจะได้ว่ามี "a" "b" ที่เป็นจำนวนเต็มที่ทำให้ :"N" = "a" - "b" ซึ่งเมื่อพิจารณาให้ "x" mod "y" คือ เศษที่ได้จากการหาร "x" ด้วย "y" นั่นคือเราเพียงพอที่จะหา "a" ที่ทำให้ "a" mod "n" ให้มีค่าเป็น "b" เพื่อที่จะแยกตัวประกอบของ "n" โดยอาศัยค่าที่ได้จาก "a", "b"และ "n" ที่ได้มาจากดังกล่าว แต่เนื่องจากการหาค่า "a" นั้นเป็นเรื่องที่ยากมากโดยเฉพาะสำหรับในกรณีที่จำนวนเต็มที่ต้องการแยกตัวประกอบมีขนาดใหญ่มาก ซึ่งขั้นตอนวิธีตะแกรงกำลังสองจะพิจารณาปรับปรุงในส่วนดังกล่าว โดยจะพิจารณาจากการคำนวณ ในหลายๆ ค่าของ "a" จากนั้นจะพิจารณาเลือกกลุ่มของ "a" ที่ทำให้ผลคูณของในแต่ละ "a" สามารถอยู่ในรูปกำลังสองของจำนวนเต็มนั่นเอง

ยกตัวอย่างเช่น 41 mod 1649 = 32, 42 mod 1649 = 115, และ 43 mod 1649 คือ 200 ซึ่งจะพบว่าการหาเศษที่ได้ทั้ง 4 ค่าของ "a" นั้นไม่อยู่ในรูปกำลังของจำนวนเต็ม แต่เมื่อพิจารณาจากผลคูณของ (32) (200) = 6400 = 80, and mod 1649, (32) (200) = (41) (43) = ((41) (43)) จะพบว่าอยู่ในรูปกำลังสองของจำนวนเต็มนั่นเอง นั่นคือจะได้ว่า 114 ≡ 80 (mod 1649) ซึ่งเมื่อจะพิจารณาขั้นตอนการแยกตัวประกอบของ "n" จากค่า "a", "b" ที่ได้นั้นสามารถทำได้โดยอาศัยทฤษฎีบทที่ว่า ถ้ามี "a", "b" ที่เป็นจำนวนมีซึ่ง "a" และ "a"="b" mod "n" นั่นคือจะได้ว่า GCD ("a"+"b", "n") และ GCD ("a"-"b","n") เป็นตัวประกอบของ ซึ่งสามารถศึกษาเพิ่มเติมได้ในเรื่องของ คอนกรูเอนซ์ของจำนวนเต็มยกกำลังสองมอดุลโลเอ็น (congruence of squares mod "n")

ซึ่งจากดังกล่าวก็มาถึงปัญหาที่ว่าถ้าให้ set ของจำนวนเต็มมาหนึ่งจำนวน จะทราบได้อย่างไรว่าผลคูณของตัวเลขใน set เหล่านั้น จะมีบางกลุ่มที่สามารถเขียนอยู่ในรูปกำลังสองของจำนวนเต็มได้ ซึ่งจากดังกล่าวจะอาศัยการเขียนอยู่ในรูปแบบของ เวกเตอร์หรือที่เรียกกันว่าเวกเตอร์ชี้กำลัง exponent vector ยกตัวอย่างเช่น ในการแยกตัวประกอบของจำรวนเต็มที่ทำให้อยู่ในรูปยกกำลังของจำนวนเฉพาะของ 504 คือ 2357 นั่นคือสามารถเขียนได้อยู่ในรูปของเวกเตอร์ชี้กำลัง (exponent vector) (3,2,0,1) ซึ่งเป็นค่าของเลขชี้กำลังของ 2, 3, 5, 7 ตามลำดับ ในกรณีของ 490 ก็สามารถเขียนได้ในทำนองเดียวกันโดยสามารถเขียนเป็นเวกเตอร์ชี้กำลังได้เป็น (1,0,1,2) โดยเมื่อพิจารณาการคูณกันของ (504) (490) ก็เปรียบเสมือนการนำค่าในเวกเตอร์ชี้กำลังมาบวกกันในแต่ละสมาชิกที่มีดัชนีตรงกัน ซึ่งจะบวกได้เป็น (4,2,1,3) ทั้งนี้มาจากทฤษฎีบทที่ว่า "a" = "a""a"

จากดังกล่าวชัดเจนว่าเมื่อตัวเลขในเวกเตอร์ชี้กำลังของจำนวนๆหนึ่งนั้นเป็นจำนวนเต็มคู่ทั้งหมดนั่นคือจะได้ว่าจำนวนดังกล่าวสามารถเขียนได้อยู่ในรูปของกำลังสมบูรณ์ของจำนวนเต็ม ยกตัวอย่างเช่นเมื่อเรานำเวกเตอร์ (3,0,0,1) มาบวกกับเวกเตอร์ (1,2,0,1) ได้เป็นเวกเตอร์ (4,2,0,2) ซึ่งมีสมาชิกเป็นจำนวนเต็มคู่ทั้งหมด โดยจะมีค่าเป็น (56) (126) ซึ่งเป็นค่ายกกำลังสองของจำนวนเต็ม นั่นคือการที่จะพิจารณาว่าผลคูณของจำนวนเต็มสองจำนวนอยู่ในรูปกำลังสองของจำนวนเต็มรึเปล่านั้นสามารถพิจารณาได้ง่ายจากการพิจารณาความเป็นคู่/คี่ของเวกเตอร์ชี้กำลัง ซึ่งเราสามารถนำสมาชิกในแต่ละตัวของเวกเตอร์ชี้กำลังมาหารด้วยสองแล้วเปลี่ยนค่าสมาชิกก่อนที่จะนำเวกเตอร์ดังกล่าวมาบวก ซึ่งเมื่อพิจารณาจากผลลัพธ์ของการบวกเวกเตอร์ ในรูปแบบดังกล่าว แล้วนำเวกเตอร์ผลลัพธ์มาทำในทำนองเดียวกันจะพบว่าจะอยู่ในรูปกำลังสองสัมบูรณ์เมื่อเป็นเวกเตอร์ศูนย์นั่นเองตัวอย่างเช่นจากตัวอย่างที่แล้วเราสามารถทำได้ในรูปแบบดังกล่าวและบวกกันได้เป็น (1,0,0,1) + (1,0,0,1) = (0,0,0,0) ซึ่งในการบวก vector นั้นเราเพียงพอที่จะทำได้ง่ายโดยการนำมาทำการ XOR กันแบบบิตต่อบิตที่ดัชนีตรงกัน

จากดังกล่าวจะเห็นได้ชัดว่าปัญหาได้เล็กลง โดยพิจารณาปัญหาที่ว่าให้เซ็ตของเวกเตอร์ชี้กำลังที่อยู่ในรูป 0/1 เราจะหาเซ็ตย่อยที่สามารถบวกกันได้เป็นเวกเตอร์ศูนย์ได้อย่างไร จากดังกล่าวเราจะพิจารณาใช้ทฤษฎีบทเกี่ยวกับพีชคณิตเชิงเส้นนั่นคือการพิจารณาจาก ความเป็นอิสระเชิงเส้นของเวกเตอร์นั่นเอง กล่าวคือจะนำเวกเตอร์ดังกล่าวมาใส่ในแต่ละแถวของเมทริกซ์จากนั้นใช้วิธีการกำจัดแบบเกาส์ (Gaussian elimination) ซึ่งจะสามารถทำได้ง่ายยิ่งขึ้นเนื่องจากเป็นเวกเตอร์ที่ถูกนำมาสมาชิกหารด้วยสองแล้วพิจารณาเพียงแค่เศษ ซึ่งจะพิจารณาได้เซตย่อยที่เป็นคำตอบในกรณีที่เวกเตอร์ภายในเซตย่อยเป็นอิสระเชิงเส้นต่อกัน

อย่างไรก็ตาม จะพบว่าเลขสุ่มบางเลขเมื่อพิจารณาเศษที่ได้จากการหารด้วย "n" ตามขั้นตอนก่อนหน้านี้ จะพบว่าอาจจะมีขนาดใหญ่มากและส่งผลให้เมื่อแยกตัวประกอบดังกล่าวประกอบด้วยจำนวนเฉพาะเป็นจำนวนมากซึ่งส่งผลโดยตรงทำให้เวกเตอร์ที่ได้มีขนาดยาวและเมทริกซ์ที่จะใช้ในการหาความเป็นอิสระเชิงเส้นนั้นมีขนาดใหญ่ ซึ่งการแก้ปัญหาดังกล่าวคือ ต้องหาค่า "a" ที่ทำให้ "a" mod "n" สามารถแยกตัวประกอบแล้วได้จำนวนเฉพาะเป็นจำนวนน้อย ซึ่งภายหลังจะเรียกว่าจำนวนนุ่มนวล (Smooth Numbers) ซึ่งจะทำให้เวกเตอร์ชี้กำลังและเมทริกซ์มีขนาดเล็กลงแม้จะยากในการหาจำนวนดังกล่าวก็ตาม ซึ่งจากดังกล่าวเราจะหาจำนวนนุ่มนวลดังกล่าวโดยใช้เทคนิคที่เรียกว่าการร่อนตะแกรง (sieving นั่นเอง) ซึ่งจะพิจารณากันต่อไป

จากที่ได้กล่าวไปแล้วในก่อนหน้านี้เราจะสรุปได้เป็นขั้นตอนดังต่อไปนี้

ซึ่งในส่วนที่เหลือของบทความดังกล่าวจะกล่าวถึงรายละเอียดปลีกย่อยเพิ่มเติมจากขั้นตอนวิธีดังกล่าวก่อนหน้านี้

ในขั้นตอนวิธีตะแกรงแบบยกกำลังนั้นจะอาศัยการหาคู่ตัวเลขของจำนวนเต็มระหว่าง "x" และ "y (x) " ซึ่ง "y (x) " คือฟังก์ชันของ "x" โดยจะเลือกเซตของจำนวนเฉพาะที่เรียกว่า ฐานตัวประกอบ (factor base) ซึ่งจะหาค่า "x" ซึ่งคือเศษของน้อยสุดและเป็นบวกที่ทำให้ "y (x) " = "x" mod "n" มีตัวประกอบทั้งหมดมาจากฐานตัวประกอบ ซึ่งจะเรียก x ตัวนั้นว่า นุ่มนวล (smooth) กับ ฐานตัวประกอบเหล่านั้น
โดยจากดังกล่าวขั้นตอนวิธีตะแกรงกำลังสองได้เพิ่มความเร็วโดยอาศัยหลักการที่จะหาความสัมพันธ์โดยการพิจารณาทำให้ "x" ที่มีค่าเข้าใกล้รากที่สองของ "n" ซึ่งทำให้มั่นใจได้มากขึ้นว่า "y (x) " จะมีค่าเล็กขึ้น และเพิ่มโอกาสที่จะทำให้นุ่มนวลมากขึ้นด้วย

จากดังกล่าวจะเห็นว่าค่า "y" ว่ามีค่าประมาณ 2"x"[√"n"] อย่างไรก็ตามก็แดงให้เห็นว่าอัตราการเติบโตของ "y" นั้นเป็นเชิงเส้นกับ "x" เท่าของรากที่สองของ "n"
นอกจากนี้ยังจะพบว่ายังมีวิธีอื่นที่จะเพิ่มความนุ่มนวลเช่นกัน ซึ่งทำได้ง่ายโดยการเพิ่มขนาดของฐานตัวประกอบนั่นเองแต่ถึงอย่างไรนั้น ก็ยังเป็นสิ่งจำเป็นที่จะต้องหาความสัมพันธ์ที่นุ่มนวลอย่างน้อยมากกว่าจำนวนฐานของตัวประกอบอยู่ดีเพื่อให้มั่นใจได้ว่ายังมีโอกาสที่จะเกิดอิสระเชิงเส้นของเวกเตอร์ชี้กำลัง

จากดังกล่าวเราจะพบว่าบางครั้ง "y (x) " นั้นอาจจะไม่นุ่มนวลแต่ก็สามารถจะรวมความสัมพันธ์ที่เป็นส่วนย่อย ("partial relations") เหล่านั้นเข้าด้วยกัน เช่น ถ้า y สองค่าเป็นผลคูณของจำนวนเฉพาะสองจำนวนที่เหมือนกันที่อยู่นอกเหนือจากฐานตัวประกอบ (แต่เท่ากับ ฐานตัวประกอบเมื่อถูกขยายแล้ว) ยกตัวอย่างเช่นมี ฐานตัวประกอบเป็น {2, 3, 5, 7} และ "n" = 91 เราจะได้ความสัมพันธ์ในส่วนย่อยดังนี้

โดยเมื่อพิจารณาการคูณกันจะได้ดังต่อไปนี้

จากนั้นพิจารณาการคูณทั้งสองข้างด้วย (11) modulo 91และจาก 11 modulo 91 มีค่าเป็น 58 ดังนั้น

โดยในการสร้างความสัมพันธ์แบบเต็มรูปแบบในแต่ความสัมพันธ์ที่เต็มรูปแบบจะถูกเรียกว่าวงวน ("cycle")

พิจารณากระบวนการต่อไปนี้

ซึ่งจะเห็นได้ว่าได้ว่าเมื่อ "y(x)" ≡ 0 (mod "p") สำหรับ "x" ใดๆที่ได้คำตอบจะพบว่า "y" ที่สอดคล้องกับค่าดังกล่าวนั้นจะหารด้วย "p" ลงตัวและจากดังกล่าวปัญหาที่เราทำคือการหารากที่สองของการมอดุลโลจำนวนเฉพาะ ซึ่งจะพบว่ามีขั้นตอนวิธีที่มีประสิทธิภาพในการกระทำดังกล่าว เช่น ขั้นตอนวิธีของแชงค์และโทเนลลี่(Shanks–Tonelli algorithm)เป็นต้น
โดยในการร่อนตะแกรงนั้นจะเริ่มด้วยการให้ทุกๆสมาชิกในอาเรย์ "A"[] เป็นค่า 0 และสำหรับในแต่ละ "p" ของฐานตัวประกอบก็จะถูกนำมาแก้สมการกำลังสองมอดุลโล "p" ซึ่งจะให้คำตอบสองค่าคือ"α" และ "β" จากนั้นก็จะให้ค่าประมาณ log(p) ให้กับสมาชิกที่มี "y"("x") = 0 mod "p" ซึ่งก็จะอยู่ในรูปแบบ "A"["kp" + "α"] และ "A"["kp" + "β"] นั่นเอง

จากดังกล่าวเราจะอธิบายตัวอย่างพื้นฐานของการประยุกต์ใช้ขั้นตอนวิธีตะแกรงกำลังสอง ในการแยกตัวประกอบของจำนวนเต็ม ซึ่งเรายกตัวอย่างตัวเลขที่มีขนาดเล็กก่อนกล่าวคือสามารถแก้ปัญหาได้โดยไม่จำเป็นต้องใช้การลดรูปด้วยการลดรูปแบบลอการึทึมหรืออื่นๆ(logarithm optimization or prime powers)โดยตัวเลขจะนำมาแยกตัวประกอบคือ "N" = 15347 ซึ่งจะพบว่าค่าจำนวนเต็มที่มากกว่าหรือเท่ากับรากที่สองของจำนวนดังกล่าวคือ 124 และเนื่องจาก "N" มีค่าเล็กมาก จึงเพียงพอที่ใช้พหุนามในการหาคำตอบ ซึ่งจะใช้สมการกำลังสองดังกล่าวคือ "y"("x") = ("x" + 124) − 15347
เนื่องจาก "N" มีขนาดเล็กจึงเพียงพอที่จะใช้จำนวนเฉพาะเพียงแค่ 4 ตัวเพื่อเป็นฐานตัวประกอบ โดยจำนวนเฉพาะ 4 ตัวแรกที่ formula_14 ยังคงหาค่าได้คือ ซึ่งจำนวน 2, 17, 23, 29 เฉพาะดังกล่าวจะใช้ในการร่อนตะแกรงเพื่อหาตัวประกอบนั่นเอง
เริ่มต้นด้วยการสร้างตะแกรงชื่อว่า formula_15 ของ
formula_16
โดยเริ่มการร่อนตะแกรงสำหรับแต่ละจำนวนเฉพาะทั้ง 4 ตัวที่ได้มา โดยเลือกที่จะร่อนตะแกรงตัวเลข 0 ≤ X < 100 ของ Y(X) ดังต่อไปนี้

ขั้นตอนถัดไปเราจะพิจารณาปรับเปลี่ยนตะแกรงของเราโดยจะพิจารณาจำนวนเฉพาะ p ในฐานตัวประกอบของเราได้แก่ formula_18 ในการแก้สมการ

เพื่อที่จะหาสมาชิกในตาราง "V" ว่ามีค่าใดบ้างที่หารด้วย "p" ลงตัว
โดยเริ่มต้นพิจารณาสำหรับ "p" = 2 นั่นคือ formula_20 ซึ่งจะได้คำตอบเป็น
formula_21
ดังนั้น เมื่อพิจารณา X=1 และเพิ่มค่าทีละ 2 จะพบว่าค่าของสมาชิกที่ดัชนีดังกล่าวจะสามารถหารด้วย 2 ลงตัว
นั่นคือจะพิจารณาหารที่ดัชนีนั้นๆด้วย 2 ซึ่งจะได้ผลลัพธ์ดังนี้

ในทำนองเดียวกันกับจำนวนเฉพาะที่เราจะนำไปพิจารณาต่อที่เหลือคือ formula_23
ซึ่งเมื่อทำในทำนองเดียวกันจะได้เป็น

โดยจะสังเกตเห็นได้ว่าเมื่อ "p" > 2 จะได้ค่าของคำตอบเชิงเส้นจำนวน 2 คำตอบ ซึ่งสอดคล้องกับการใช้รากที่ 2 นั่นเอง
ในแต่ละสมการ formula_25 คำตอบใน formula_26 จะหารด้วย "p" ลงตัวเมื่อ "x" = "a" สำหรับแต่ละพหุคูณของ "p" นั่นคือเมื่อเราพิจาณาหารค่าสมาชิกใน "V" ที่ตำแหน่ง "a", "a"+"p", "a"+2"p", "a"+3"p"... สำหรับแต่ละจำนวนเฉพาะที่เป็นฐานตัวประกอบเพื่อค้นหาจำนวนนุ่มนวลในคุณสมบัติที่ว่ามันต้องพบแต่ละจำนวนเฉพาะดังกล่าวไม่เกิน 1 ครั้งเท่านั้น

ซึ่งจากดังกล่าวดังนั้นเราจะพิจารณาเลือกสมาชิกใน "V" ที่มีค่าเท่ากับ 1 ซึ่งสอดคล้องกับการเป็นจำนวนนุ่มนวล จากตัวอย่างจะพบสามค่าบางส่วนที่มีคุณสมบัติดังกล่าว ได้แก่ formula_28, formula_29, and formula_30 ซึ่งมีค่าเป็น 1 ซึ่งจะสามารถทำเป็นตารางอธิบายได้ดังนี้

เนื่องจากคุณสมบัติของ Smooth Number จึงสามารแก้ไขปัญหาได้ด้วยการใช้คุณสมบัติที่ว่า formula_31
โดยเริ่มต้นในส่วนนี้เราจะเขียนค่าในเซตย่อยที่เราเลือกมาจากขั้นตอนที่แล้วมาเขียนรูปผลคูณของจำนวนเฉพาะที่เราพิจารณาใช้เป็นฐานตัวประกอบ ซึ่งจะได้ดังต่อไปนี้

จากนั้นพิจาณาเขียนในรูปเวกเตอร์ชี้กำลังตามที่ได้กล่าวไปก่อนหน้านี้เพื่อที่จะนำมาใส่เมทริกซ์เพื่อพิจารณาแก้ปัญหาดังต่อไปนี้

ซึ่งจะพบว่าเราจะได้เมทริกซ์ S ดังกล่าวเป็น

นั่นคือจะได้ว่าผลคูณของค่าสามค่าในเซตย่อยดังกล่าวสามารถเขียนอยู่ในรูปกำลังสอง(mod N)ได้กล่าวคือ

และ

ซึ่งจากดังกล่าวเมื่อพิจารณาคูณทั้งสองข้างของสมการคอนกรูเอนซ์จะได้ว่า

ซึ่งจะได้ว่า GCD(3070860 - 22678, 15347) = 103 เป็นตัวประกอบหนึ่งของ 15347 และจะได้ตัวประกอบที่เหลือของ 15347 คือ 149

จากดังกล่าวจะพิจารณาอ้างอิงถึงรหัสเทียมที่จำเป็นต้องใช้ในการแก้ปัญหาตะแกรงกำลังสองดังต่อไปนี้
ซึ่งง่ายต่อการเข้าใจและอยากให้ผู้อ่านไปศึกษาเพิ่มเติมด้วยตัวเอง

ขั้นตอนวิธีที่ 1 วิธีการของตะแกรงของเอราโตสเทเนส (The Sieve of Eratosthenes)
ขั้นตอนวิธีที่ 2 การตรวจสอบว่า "N" เป็นจำนวนนุ่มนวลขนาด "B" หรือไม่ โดยพิจารณาให้ "P" เป็นเซ็ตของจำนวนเฉพาะที่น้อยกว่า "B"
ขั้นตอนวิธีที่ 3 เป็นการลบค่าของ "p" ซึ่งเป็นจำนวนเฉพาะทั้งหมดออกจาก "N"
ขั้นตอนที่ 4 การร่อนตะแกรง

จากดังกล่าวเราจะพบว่าขั้นตอนวิธีตะแกรงแบบยกกำลังสองนั้นเป็นหนึ่งในขั้นตอนวิธีสำหรับการแยกตัวประกอบของตัวเลขที่มีขนาดใหญ่ โดยสำหรับตัวเลขที่มี 40 หลักถึง 100 หลักจะพบว่าเป็นขั้นตอนวิธีที่มีความเร็วในการแยกตัวประกอบมากที่สุด แต่ยังเป็นอันดับสองในกรณีทีจำนวนเต็มที่ต้องการแยกตัวประกอบมีมากกว่า 100 หลัก
นอกจากนี้เรายังได้เห็นการลดรูปในหลายขั้นตอนเช่นการร่อนตะแกรงผ่าน ("ax" + "b") - "N" แทน "x" - "N" และเนื่องด้วยการลดปัญหาโดยใช้วิธีดังกล่าวทำให้เราสามารถแบ่งการแยกตัวประกอบผ่านเครือข่ายขนาดใหญ่ของคอมพิวเตอร์โดยใช้สมการพหุนามแค่สมการเดียว