นี่คือคำสั่ง ecm ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
ecm - การแยกตัวประกอบจำนวนเต็มโดยใช้ ECM, P-1 หรือ P+1
เรื่องย่อ
ECM [ตัวเลือก] B1 [B2นาที-บีทูแม็กซ์ | B2]
DESCRIPTION
ecm เป็นโปรแกรมแฟคตอริ่งจำนวนเต็มโดยใช้วิธี Elliptic Curve (ECM) วิธี P-1
หรือวิธี P+1 ส่วนต่อไปนี้จะอธิบายพารามิเตอร์ที่เกี่ยวข้องกับสิ่งเหล่านี้
อัลกอริทึม
STEP 1 AND STEP 2 ผูกพัน พารามิเตอร์
B1
B1 คือขั้นตอนที่ 1 ที่ถูกผูกไว้ เป็นพารามิเตอร์บังคับ สามารถกำหนดเป็นจำนวนเต็ม
รูปแบบ (เช่น 3000000) หรือในรูปแบบทศนิยม (3000000.0 หรือ 3e6) NS
ที่ใหญ่ที่สุดที่เป็นไปได้ B1 ค่าคือ 9007199254740996 สำหรับ P-1 และ ULONG_MAX หรือ
9007199254740996 (แล้วแต่จำนวนใดจะน้อยกว่า) สำหรับ ECM และ P+1 ไพรม์ทั้งหมด 2 <= p <= B1 เป็น
ประมวลผลในขั้นตอนที่ 1
B2
B2 คือขั้นตอนที่ 2 ที่ถูกผูกไว้ เป็นทางเลือก: หากละเว้น ค่าเริ่มต้นจะถูกคำนวณจาก
B1ซึ่งควรใกล้เคียงกับค่าที่เหมาะสมที่สุด ชอบ B1สามารถกำหนดเป็นจำนวนเต็มหรือเป็น .ได้
รูปแบบจุดลอยตัว ค่าที่เป็นไปได้มากที่สุดของ B2 อยู่ที่ประมาณ 9e23 แต่
ขึ้นอยู่กับจำนวนบล็อค k หากคุณระบุ -k ตัวเลือก. ไพรม์ทั้งหมด B1 <= พี <=
B2 ถูกประมวลผลในขั้นตอนที่ 2 ถ้า B2 < B1ไม่ได้ดำเนินการขั้นตอนที่ 2
B2นาที-บีทูแม็กซ์
อีกทางหนึ่งอาจใช้ B2นาที-บีทูแม็กซ์ แบบซึ่งหมายถึงจำนวนเฉพาะทั้งหมด B2นาที <= p
<= บีทูแม็กซ์ ควรแปรรูป จึงระบุ B2 สอดคล้องกับ .เท่านั้น B1-B2. ค่า
of B2นาที และ บีทูแม็กซ์ อาจใหญ่ตามอำเภอใจ แต่ต้องไม่เกินความแตกต่าง
ประมาณ 9e23 ขึ้นอยู่กับจำนวนบล็อก k.
แฟคตอริ่ง วิธีการ
-pm1
ดำเนินการ P-1 แทนวิธีการเริ่มต้น (ECM)
-pp1
ดำเนินการ P+1 แทนวิธีการเริ่มต้น (ECM)
กรุ๊ป AND INITIAL จุด พารามิเตอร์
-x0 x
[ECM, P-1, P+1] ใช้ x (จำนวนเต็มหรือจำนวนตรรกยะโดยพลการ) เป็นจุดเริ่มต้น สำหรับ
ตัวอย่าง, -x0 1/3 ถูกต้อง ถ้าไม่ให้ x ถูกสร้างขึ้นจากค่าซิกมาสำหรับ ECM
หรือสุ่มสำหรับ P-1 และ P+1
-ซิกม่า s
[ECM] ใช้ s (จำนวนเต็มแม่นยำตามอำเภอใจ) เป็นตัวสร้างเส้นโค้ง หากละเว้น s is
สร้างขึ้นโดยการสุ่ม
-A a
[ECM] ใช้ a (จำนวนเต็มความแม่นยำโดยพลการ) เป็นพารามิเตอร์เส้นโค้ง ถ้าละเว้นก็คือ
เกิดจากค่าซิกมา
-ไป คลื่น
[ECM, P-1, P+1] คูณจุดเริ่มต้นด้วย คลื่นซึ่งสามารถนิพจน์ที่ถูกต้องใดๆ
อาจมีอักขระพิเศษ N เป็นที่ยึดสำหรับอินพุตปัจจุบัน
ตัวเลข. ตัวอย่าง:
ecm -pp1 -go "N^2-1" 1e6 <คอมโพสิต2000
STEP 2 พารามิเตอร์
-k k
[ECM, P-1, P+1] ดำเนินการ k บล็อกในขั้นตอนที่ 2 สำหรับที่กำหนด B2 มูลค่าเพิ่มขึ้น k
ลดการใช้หน่วยความจำของขั้นตอนที่ 2 โดยใช้เวลา cpu มากขึ้น
-treefile ไฟล์
จัดเก็บข้อมูลบางตารางในไฟล์ดิสก์เพื่อลดจำนวนหน่วยความจำที่ใช้งานใน
ขั้นตอนที่ 2 โดยใช้ดิสก์ I/O ข้อมูลจะถูกเขียนลงไฟล์ ไฟล์.1, ไฟล์.2 เป็นต้น
ใช้ไม่ได้กับสเตจ 2 แบบเร็วสำหรับ P+1 และ P-1
-Power n
[ECM, P-1] ใช้ x^n สำหรับส่วนขยายของ Brent-Suyama (-Power 1 ปิดการใช้งานของ Brent-Suyama's
ส่วนขยาย). พหุนามเริ่มต้นจะถูกเลือกขึ้นอยู่กับวิธีการและ B2 สำหรับ P-1
และ P+1 ปิดใช้งานสเตจเร็ว 2 สำหรับ P-1 n จะต้องเท่ากัน
-ดิกสัน n
[ECM, P-1] ใช้ดีกรี-n พหุนามของดิกสันสำหรับการขยายเบรนท์-ซูยามะ สำหรับ P-1 และ
P+1 ปิดการใช้งานสเตจเร็ว 2 ไลค์สำหรับ -Power, n ต้องเป็นเลขคู่สำหรับ P-1
-maxmem n
ใช้มากที่สุด n เมกะไบต์ของหน่วยความจำในระยะที่ 2
-ntt, -ไม่-ntt
เปิดใช้งานหรือปิดใช้งานรหัสการแปลงตัวเลขทฤษฎีสำหรับเลขคณิตพหุนามใน
ด่าน 2 ด้วย NTT dF จะถูกเลือกให้เป็นกำลัง 2 และถูกจำกัดด้วยตัวเลข
จำนวนเฉพาะที่เหมาะสมกับคำเครื่อง (ซึ่งเป็นข้อ จำกัด เฉพาะ 32 บิต
ระบบ) ตัวแปร -no-ntt ใช้หน่วยความจำมากกว่า แต่เร็วกว่า NTT ที่มีขนาดใหญ่
ตัวเลขอินพุต โดยค่าเริ่มต้น NTT ใช้สำหรับ P-1, P+1 และ ECM สำหรับจำนวนขนาดที่
มากที่สุด 30 คำเครื่อง
เอาท์พุท
-q
โหมดเงียบ พบการแยกตัวประกอบถูกพิมพ์บนเอาต์พุตมาตรฐานพร้อมตัวประกอบ
คั่นด้วยช่องว่าง หนึ่งบรรทัดต่อหมายเลขอินพุต (หากไม่พบตัวประกอบ
หมายเลขอินพุตจะถูกคัดลอกอย่างง่าย)
-v
โหมดละเอียด พิมพ์ข้อมูลเพิ่มเติม more -v ตัวเลือกเพิ่มความฟุ่มเฟือย กับ
หนึ่ง -v, ชนิดของการคูณแบบแยกส่วนที่ใช้, ค่าเริ่มต้น x0, พารามิเตอร์ขั้นตอนที่ 2
และความคืบหน้า และเส้นโค้งที่คาดหวังและเวลาในการหาปัจจัยที่มีขนาดต่างกันสำหรับ ECM
ถูกพิมพ์ กับ -v -v, ค่า A สำหรับ ECM และเรซิดิวที่ส่วนท้ายของขั้นตอนที่ 1 และ
พิมพ์ขั้นตอนที่ 2 มากกว่า -v พิมพ์ข้อมูลภายในสำหรับการดีบัก
-ประทับเวลา
พิมพ์การประทับเวลาเมื่อใดก็ตามที่มีการประมวลผลเส้นโค้ง ECM ใหม่หรือการรัน P+1 หรือ P-1
โมดูล เลขคณิต OPTIONS
มีอัลกอริธึมหลายตัวสำหรับการคูณแบบแยกส่วน โปรแกรมพยายามค้นหา
หนึ่งที่ดีที่สุดสำหรับแต่ละอินพุต หนึ่งสามารถบังคับวิธีการที่กำหนดด้วยตัวเลือกต่อไปนี้
-mpzmod
ใช้ฟังก์ชัน mpz_mod ของ GMP (sub-quadratic สำหรับอินพุตขนาดใหญ่ แต่ทำให้เกิดโอเวอร์เฮดบางส่วน
สำหรับคนตัวเล็ก)
-ม็อดมุลน์
ใช้การคูณของมอนต์โกเมอรี่ (แบบสมการกำลังสอง) มักจะเป็นวิธีที่ดีที่สุดสำหรับคนตัวเล็ก
อินพุต
-redc
ใช้การคูณของมอนต์โกเมอรี่ (เวอร์ชันย่อยกำลังสอง) เหมาะสมตามทฤษฎีสำหรับ
อินพุตขนาดใหญ่
-nobase2
ปิดการใช้งานรหัสฐาน 2 พิเศษ (ซึ่งใช้เมื่อตัวเลขอินพุตเป็นปัจจัยขนาดใหญ่ของ
2^n+1 หรือ 2^n-1 ดู -v).
-ฐาน2 n
บังคับใช้รหัสฐาน 2 พิเศษ จำนวนที่ป้อนต้องหาร 2^n+1 ถ้า n > 0 หรือ 2^|n|-1
if n <0.
ไฟล์ I / O
ตัวเลือกต่อไปนี้ช่วยให้สามารถดำเนินการขั้นตอนที่ 1 และขั้นตอนที่ 2 แยกกันได้ ทั้งบน
เครื่องต่างกัน ในเวลาต่างกัน หรือใช้ซอฟต์แวร์ต่างกัน (โดยเฉพาะ George
โปรแกรม Prime95/mprime ของ Woltman สามารถสร้างเอาต์พุตขั้นตอนที่ 1 ที่เหมาะสำหรับการกลับมาทำงานต่อด้วย
GMP-ECM) นอกจากนี้ยังสามารถแบ่งขั้นตอนที่ 2 ออกเป็นหลายๆ รอบโดยใช้ บีทูมิน-บีทูแม็กซ์
ตัวเลือก
-inp ไฟล์
รับข้อมูลจากไฟล์ ไฟล์ แทนที่จะเป็นอินพุตมาตรฐาน
- บันทึก ไฟล์
บันทึกผลลัพธ์ของขั้นตอนที่ 1 ใน ไฟล์. ถ้า ไฟล์ มีข้อผิดพลาดเกิดขึ้น ตัวอย่าง: เพื่อดำเนินการ
เพียงขั้นตอนที่ 1 กับ B1=1000000 บนหมายเลขประกอบในไฟล์ "c155" และบันทึก
ส่งผลให้ไฟล์ "foo" ใช้
ecm - บันทึก foo 1e6 1 < c155
-save ไฟล์
Like - บันทึกแต่ผนวกกับไฟล์ที่มีอยู่
ที่่เป็นการ ไฟล์
เรซูเม่ตกค้างจาก ไฟล์, อ่านจากอินพุตมาตรฐาน if ไฟล์ เป็น "-". ตัวอย่าง: to
ดำเนินการตามขั้นตอนที่ 2 ตามขั้นตอนที่ 1 ข้างต้น ใช้
ecm -ประวัติ foo 1e6
-chkpoint ไฟล์
เขียนเรซิดิวปัจจุบันเป็นระยะ ๆ ในระยะ 1 ถึง ไฟล์. ในกรณีที่ไฟฟ้าดับ
ฯลฯ การคำนวณสามารถดำเนินการต่อด้วย ที่่เป็นการ ตัวเลือก
ecm -chkpnt foo -pm1 1e10 < largenumber.txt
LOOP โหมด
“โหมดวนรอบ” (ตัวเลือก -c n) ช่วยให้สามารถเรียกใช้เส้นโค้งหลายเส้นในแต่ละหมายเลขอินพุต NS
ตัวเลือกต่อไปนี้จะควบคุมพฤติกรรมของมัน
-c n
ดำเนินการ n ทำงานบนแต่ละหมายเลขอินพุต (ค่าเริ่มต้นคือหนึ่ง) ตัวเลือกนี้มีประโยชน์สำหรับ .เป็นหลัก
P+1 (เช่น กับ n=3) หรือสำหรับ ECM โดยที่ n สามารถกำหนดเป็นจำนวนที่คาดหวังของ
เส้นโค้งเพื่อหาปัจจัย d ที่มีขอบเขตขั้นตอนที่ 1 ที่กำหนด ตัวเลือกนี้เข้ากันไม่ได้
กับ -ประวัติย่อ, -ซิกม่า -x0. การให้ -c 0 สร้างวงวนเป็นอนันต์จนตัวประกอบเป็น
พบว่า
-หนึ่ง
ในโหมดวนรอบ หยุดเมื่อพบปัจจัย ค่าเริ่มต้นคือดำเนินการต่อจนกระทั่ง
โคแฟกเตอร์เป็นจำนวนเฉพาะหรือเสร็จสิ้นตามจำนวนการรันที่ระบุ
-b
การประมวลผลแบบกว้างก่อน: ในโหมดวนรอบ เรียกใช้หนึ่งเส้นโค้งสำหรับแต่ละหมายเลขอินพุต จากนั้น a
โค้งที่สองสำหรับแต่ละอันเป็นต้น นี่คือโหมดเริ่มต้นด้วย -inp.
-d
การประมวลผลเชิงลึกเป็นอันดับแรก: ในโหมดวนรอบ ให้รัน n โค้งสำหรับตัวเลขแรกแล้ว n เส้นโค้ง
สำหรับอันที่สองเป็นต้น นี่คือโหมดเริ่มต้นที่มีอินพุตมาตรฐาน
-เคย n
ในโหมดวนรอบ ในการรันที่สองและถัดไป เอาต์พุตเฉพาะนิพจน์ที่มี at
มากที่สุด n ตัวอักษร ค่าเริ่มต้นคือ -เคย 0.
-i n
ในโหมดวนซ้ำ เพิ่มขึ้น B1 by n หลังจากแต่ละโค้ง
-I n
ในโหมดวนซ้ำ คูณ B1 โดยปัจจัยขึ้นอยู่กับ n หลังจากแต่ละโค้ง ค่าเริ่มต้นคือหนึ่ง
ซึ่งควรจะเหมาะสมที่สุดในเครื่องเดียวในขณะที่ -I 10 สามารถใช้เมื่อพยายาม
แยกตัวประกอบตัวเลขเดียวกันพร้อมกันในเครื่องที่เหมือนกัน 10 เครื่อง
SHELL คำสั่ง การดำเนินการ
optins เหล่านี้อนุญาตให้เรียกใช้คำสั่งเชลล์เพื่อเสริมฟังก์ชันการทำงานของ GMP-ECM
-prpcd cmd
ดำเนินการคำสั่ง cmd เพื่อทดสอบความเป็นอันดับหนึ่งถ้าปัจจัยและปัจจัยร่วมแทน GMP-ECM's
ฟังก์ชั่นของตัวเอง หมายเลขที่จะทดสอบจะถูกส่งผ่าน stdin รหัสทางออก 0 is
ตีความว่าเป็น "อาจเป็นจำนวนเฉพาะ" รหัสออกที่ไม่ใช่ศูนย์เป็น "คอมโพสิต"
-faccmd cmd
ดำเนินการคำสั่ง cmd เมื่อใดก็ตามที่พบปัจจัยโดย P-1, P+1 หรือ ECM หมายเลขอินพุต,
แฟคเตอร์และโคแฟกเตอร์จะถูกส่งผ่าน stdin แต่ละรายการในบรรทัด สามารถใช้เช่นเพื่อ
ส่งปัจจัยใหม่โดยอัตโนมัติ:
ecm -facmd 'mail -s “$HOSTNAME พบปัจจัย”
me@myaddress.com' 11e6 < cunningham.in
-idlecmd cmd
ดำเนินการคำสั่ง cmd ก่อนที่แต่ละเส้น ECM จะเริ่มต้นการพยายาม P-1 หรือ P+1 กับตัวเลข
หากสถานะการออกของ cmd ไม่เป็นศูนย์ GMP-ECM จะสิ้นสุดลงทันที มิฉะนั้น
ดำเนินไปตามปกติ GMP-ECM หยุดทำงานในขณะที่ cmd วิ่งเสนอทางให้
GMP-ECM sleep เช่นในขณะที่ระบบไม่ว่าง
เบ็ดเตล็ด
-n
เรียกใช้โปรแกรมในโหมด "ดี" (ต่ำกว่าลำดับความสำคัญปกติ)
-nn
เรียกใช้โปรแกรมในโหมด "ดีมาก" (ลำดับความสำคัญไม่ได้ใช้งาน)
-B2สเกล f
คูณค่าดีฟอลต์ขั้นตอนที่ 2 bound B2 โดยค่าทศนิยม f. ตัวอย่าง: -B2สเกล
0.5 แบ่งค่าเริ่มต้น B2 โดย 2
-stage1time n
เพิ่ม n วินาทีถึงสเตจ 1 ครั้ง สิ่งนี้มีประโยชน์ในการรับเวลาที่คาดหมายที่ถูกต้องด้วย -v if
ส่วนหนึ่งของขั้นตอนที่ 1 เสร็จสิ้นแล้วในการดำเนินการอื่น
-cofdec
บังคับเอาท์พุตโคแฟกเตอร์เป็นทศนิยม (แม้ว่าจะใช้นิพจน์ก็ตาม)
-h, --ช่วยด้วย
แสดงคำอธิบายสั้นๆ เกี่ยวกับการใช้ ecm พารามิเตอร์ และตัวเลือกบรรทัดคำสั่ง
-printconfig
พิมพ์พารามิเตอร์การกำหนดค่าที่ใช้สำหรับการคอมไพล์และออก
INPUT ซิงค์
หมายเลขอินพุตสามารถมีได้หลายรูปแบบ:
ตัวเลขทศนิยมดิบ เช่น 123456789
สามารถใส่ความคิดเห็นในไฟล์ได้: ทุกอย่างหลังจาก “//” ถูกละเว้น จนถึงจุดสิ้นสุดของ
เส้น
ต่อสาย. หากบรรทัดลงท้ายด้วยอักขระแบ็กสแลช “\” จะถือว่าเป็น
ดำเนินการต่อในบรรทัดถัดไป
สามารถใช้นิพจน์ทางคณิตศาสตร์ทั่วไปได้ ตัวอย่าง: 3*5+2^10.
แฟกทอเรียล: ตัวอย่าง ! 53.
หลายแฟกทอเรียล: ตัวอย่าง 15 means 15*12*9*6*3.
เบื้องต้น: ตัวอย่าง 11 # means 2*3*5*7*11.
พื้นฐานที่ลดลง: ตัวอย่าง 17 5 # means 5*7*11*13*17.
ฟังก์ชัน: ปัจจุบัน ฟังก์ชันเดียวที่มีคือ พี่(x,n).
EXIT สถานภาพ
สถานะการออกแสดงผลลัพธ์ของเส้นโค้ง ECM สุดท้ายหรือ P-1/P+1 พยายามโปรแกรม
ดำเนินการ แต่ละบิตมีความหมายถึงเหตุการณ์เฉพาะ โดยเฉพาะอย่างยิ่ง:
บิต 0
0 หากโปรแกรมหยุดตามปกติ 1 หากเกิดข้อผิดพลาด
บิต 1
0 หากไม่พบตัวประกอบที่เหมาะสม 1 มิฉะนั้น
บิต 2
0 ถ้าตัวประกอบเป็นจำนวนรวม 1 ถ้าตัวประกอบเป็นจำนวนเฉพาะที่น่าจะเป็น
บิต 3
0 ถ้าโคแฟกเตอร์เป็นจำนวนรวม 1 ถ้าโคแฟกเตอร์เป็นไพรม์ที่น่าจะเป็น
ดังนั้น ค่าสถานะการออกต่อไปนี้อาจเกิดขึ้น:
0
การสิ้นสุดโปรแกรมปกติ ไม่พบปัจจัย
1
ความผิดพลาด
2
พบปัจจัยผสม โคแฟกเตอร์คือคอมโพสิต
6
พบปัจจัยเฉพาะที่เป็นไปได้ โคแฟกเตอร์คือคอมโพสิต
8
พบหมายเลขอินพุต
10
พบปัจจัยผสม โคแฟกเตอร์เป็นไพรม์ที่น่าจะเป็น
14
พบปัจจัยเฉพาะที่น่าจะเป็น ปัจจัยร่วมคือจำนวนเฉพาะที่น่าจะเป็น
ใช้ ecm ออนไลน์โดยใช้บริการ onworks.net