'\" t .\" Title: ECM .\" Author: [see the "AUTHORS" section] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 11/03/2023 .\" Manual: April 22, 2003 .\" Source: April 22, 2003 .\" Language: Persian .\" .TH "ECM" "1" "11/03/2023" "April 22, 2003" "April 22, 2003" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" ecm \- تجزیه اعداد صحیح با استفاده از روش‌های ECM، P\-1 یا P+1 .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBecm\fR\ 'u \fBecm\fR [\fBگزینه‌ها\fR] \fIB1\fR [\fIB2min\fR\-\fIB2max\fR | \fIB2\fR] .br .SH "توضیحات (DESCRIPTION)" .PP برنامه ecm ابزاری برای تجزیه اعداد صحیح به عوامل اول با استفاده از روش خم بیضوی (ECM)، روش P\-1، یا روش P+1 است\&. بخش‌های بعدی پارامترهای مربوط به این الگوریتم‌ها را شرح می‌دهند\&. .SH "پارامترهای کران مرحله ۱ و مرحله ۲ (STEP 1 AND STEP 2 BOUND PARAMETERS)" .PP \fB\fIB1\fR\fR .RS 4 \fIB1\fR کران مرحله ۱ است\&. این یک پارامتر اجباری است\&. این مقدار را می‌توان در قالب عدد صحیح (برای مثال 3000000) یا در قالب ممیز شناور (3000000\&.0 یا 3e6) مشخص کرد\&. بزرگ‌ترین مقدار ممکن برای \fIB1\fR برابر با 9007199254740996 برای P\-1، و ULONG_MAX یا 9007199254740996 (هر کدام که کوچک‌تر باشد) برای ECM و P+1 است\&. تمام اعداد اول 2 <= p <= \fIB1\fR در مرحله ۱ پردازش می‌شوند\&. .RE .PP \fB\fIB2\fR\fR .RS 4 \fIB2\fR کران مرحله ۲ است\&. این پارامتر اختیاری است: اگر مشخص نشود، یک مقدار پیش‌فرض از روی \fIB1\fR محاسبه می‌شود که باید نزدیک به بهینه باشد\&. همانند \fIB1\fR، می‌توان آن را در قالب عدد صحیح یا ممیز شناور مشخص کرد\&. بزرگ‌ترین مقدار ممکن برای \fIB2\fR تقریباً 9e23 است، اما در صورت مشخص کردن گزینه \fB\-k\fR، به تعداد بلوک‌های \fIk\fR بستگی دارد\&. تمام اعداد اول \fIB1\fR <= p <= \fIB2\fR در مرحله ۲ پردازش می‌شوند\&. اگر \fIB2\fR < \fIB1\fR باشد، هیچ مرحله ۲ای انجام نمی‌شود\&. .RE .PP \fB\fIB2min\fR\fR\fB\-\fR\fB\fIB2max\fR\fR .RS 4 همچنین می‌توان از قالب \fIB2min\fR\-\fIB2max\fR استفاده کرد، بدین معنا که تمام اعداد اول \fIB2min\fR <= p <= \fIB2max\fR باید پردازش شوند\&. بنابراین مشخص کردن تنها \fIB2\fR معادل \fIB1\fR\-\fIB2\fR است\&. مقادیر \fIB2min\fR و \fIB2max\fR می‌توانند به میزان دلخواه بزرگ باشند، اما با توجه به تعداد بلوک‌های \fIk\fR، اختلاف آن‌ها نباید تقریباً از 9e23 فراتر رود\&. .RE.SH "روش تجزیه (FACTORING METHOD)" .PP \fB\-pm1\fR .RS 4 اجرای P\-1 به جای روش پیش‌فرض (ECM)\&. .RE .PP \fB\-pp1\fR .RS 4 اجرای P+1 به جای روش پیش‌فرض (ECM)\&. .RE .SH "پارامترهای گروه و نقطه اولیه (GROUP AND INITIAL POINT PARAMETERS)" .PP \fB\-x0 \fR\fB\fIx\fR\fR .RS 4 [ECM, P\-1, P+1] استفاده از \fIx\fR (عدد صحیح یا گویای با دقت دلخواه) به عنوان نقطه اولیه\&. برای مثال، \fB\-x0 1/3\fR معتبر است\&. در صورت مشخص نشدن، \fIx\fR از مقدار سیگما برای ECM، یا به صورت تصادفی برای P\-1 و P+1 تولید می‌شود\&. .RE .PP \fB\-sigma \fR\fB\fIs\fR\fR .RS 4 [ECM] استفاده از \fIs\fR (عدد صحیح با دقت دلخواه) به عنوان مولد منحنی\&. در صورت حذف، \fIs\fR به صورت تصادفی تولید می‌شود\&. .RE .PP \fB\-A \fR\fB\fIa\fR\fR .RS 4 [ECM] استفاده از \fIa\fR (عدد صحیح با دقت دلخواه) به عنوان پارامتر منحنی\&. در صورت حذف، از مقدار سیگما تولید می‌شود\&. .RE .PP \fB\-go \fR\fB\fIval\fR\fR .RS 4 [ECM, P\-1, P+1] ضرب نقطه اولیه در \fIval\fR، که می‌تواند هر عبارت معتبری باشد، و احتمالاً نویسه ویژه N را به عنوان جای‌نگهدار برای عدد ورودی فعلی دربرگیرد\&. مثال: .sp .if n \{\ .RS 4 .\} .nf ecm \-pp1 \-go "N^2\-1" 1e6 < composite2000 .fi .if n \{\ .RE .\} .sp .RE .SH "پارامترهای مرحله ۲ (STEP 2 PARAMETERS)" .PP \fB\-k \fR\fB\fIk\fR\fR .RS 4 [ECM, P\-1, P+1] اجرای \fIk\fR بلوک در مرحله ۲\&. برای یک مقدار مشخص از \fIB2\fR، افزایش \fIk\fR میزان مصرف حافظه در مرحله ۲ را به بهای زمان پردازنده (CPU) بیشتر کاهش می‌دهد\&. .RE .PP \fB\-treefile \fR\fB\fIfile\fR\fR .RS 4 برخی جدول‌های داده را در فایل‌های دیسک ذخیره می‌کند تا مقدار حافظه اشغال‌شده در مرحله ۲ را به بهای I/O دیسک کاهش دهد\&. داده‌ها در فایل‌های \fIfile\fR\&.1، \fIfile\fR\&.2 و غیره نوشته خواهند شد\&. با مرحله ۲ سریع برای P+1 و P\-1 کار نمی‌کند\&. .RE .PP \fB\-power \fR\fB\fIn\fR\fR .RS 4 [ECM] استفاده از x^\fIn\fR برای بسط Brent\-Suyama (\fB\-power 1\fR بسط Brent\-Suyama را غیرفعال می‌کند)\&. چندجمله‌ای پیش‌فرض بسته به روش و B2 انتخاب می‌شود\&. .RE .PP \fB\-dickson \fR\fB\fIn\fR\fR .RS 4 [ECM] استفاده از چندجمله‌ای Dickson با درجه\-\fIn\fR برای بسط Brent\-Suyama\&. .RE .PP \fB\-maxmem \fR\fB\fIn\fR\fR .RS 4 استفاده حداکثر از \fIn\fR مگابایت حافظه در مرحله ۲\&. .RE .PP \fB\-ntt\fR, \fB\-no\-ntt\fR .RS 4 فعال یا غیرفعال کردن کد تبدیل نظریه اعداد (Number\-Theoretic Transform) برای محاسبات چندجمله‌ای در مرحله ۲\&. با NTT، مقدار dF توانی از ۲ انتخاب می‌شود، و به تعداد اعداد اول مناسبی که در یک کلمه ماشین (machine word) جای می‌گیرند محدود است (که این فقط در سیستم‌های ۳۲ بیتی یک محدودیت محسوب می‌شود)\&. نگارش \-no\-ntt حافظه بیشتری مصرف می‌کند، اما برای اعداد ورودی بزرگ سریع‌تر از NTT است\&. به‌طور پیش‌فرض، NTT برای P\-1، P+1 و برای ECM روی اعدادی با حداکثر اندازه ۳۰ کلمه ماشین استفاده می‌شود\&. .RE.SH "خروجی (OUTPUT)" .PP \fB\-q\fR .RS 4 حالت بی‌صدا\&. تجزیه‌های پیدا شده در خروجی استاندارد چاپ می‌شوند، در حالی که فاکتورها با فاصله از یکدیگر جدا شده‌اند؛ یک خط برای هر عدد ورودی (اگر عاملی یافت نشود، خود عدد ورودی صرفاً کپی می‌شود)\&. .RE .PP \fB\-v\fR .RS 4 حالت پرگو\&. اطلاعات بیشتری چاپ می‌شود؛ گزینه‌های \fB\-v\fR بیشتر، میزان جزئیات خروجی را افزایش می‌دهند\&. با یک \fB\-v\fR، نوع ضرب پیمانه‌ای استفاده‌شده، مقدار اولیه x0، پارامترها و پیشرفت گام ۲، و منحنی‌ها و زمان مورد انتظار برای یافتن عامل‌هایی با اندازه‌های مختلف در ECM چاپ می‌شوند\&. با \fB\-v \-v\fR، مقدار A برای ECM و باقی‌مانده‌ها در پایان گام ۱ و گام ۲ چاپ می‌شوند\&. تعداد \fB\-v\fR بیشتر، داده‌های داخلی را برای اشکال‌زدایی چاپ می‌کند\&. .RE .PP \fB\-timestamp\fR .RS 4 هربار که یک منحنی ECM جدید یا یک اجرای P+1 یا P\-1 پردازش می‌شود، یک برچسب زمانی چاپ می‌کند\&. .RE .SH "گزینه‌های محاسبات پیمانه‌ای (MODULAR ARITHMETIC OPTIONS)" .PP الگوریتم‌های متعددی برای ضرب پیمانه‌ای در دسترس هستند\&. برنامه تلاش می‌کند بهترین مورد را برای هر ورودی پیدا کند؛ می‌توان با گزینه‌های زیر استفاده از یک روش مشخص را اجبار کرد\&. .PP \fB\-mpzmod\fR .RS 4 استفاده از تابع mpz_mod کتابخانه GMP (برای ورودی‌های بزرگ از مرتبه زیر-مربعی است، اما برای ورودی‌های کوچک مقداری سربار ایجاد می‌کند)\&. .RE .PP \fB\-modmuln\fR .RS 4 استفاده از ضرب مونتگومری (نسخه درجه دو)\&. معمولاً بهترین روش برای ورودی‌های کوچک است\&. .RE .PP \fB\-redc\fR .RS 4 استفاده از ضرب مونتگومری (نسخه زیر-مربعی)\&. از نظر تئوری برای ورودی‌های بزرگ بهینه است\&. .RE .PP \fB\-nobase2\fR .RS 4 غیرفعال کردن کد ویژه مبنای ۲ (که وقتی عدد ورودی عامل بزرگی از 2^n+1 یا 2^n\-1 باشد استفاده می‌شود، \fB\-v\fR را ببینید)\&. .RE .PP \fB\-base2\fR \fIn\fR .RS 4 اجبار به استفاده از کد ویژه مبنای ۲؛ در صورتی که \fIn\fR > 0 باشد، عدد ورودی باید مقسوم‌علیه 2^\fIn\fR+1 باشد، یا اگر \fIn\fR < 0 باشد، مقسوم‌علیه 2^|\fIn\fR|\-1 باشد\&. .RE .SH "ورودی/خروجی فایل (FILE I/O)" .PP گزینه‌های زیر امکان انجام گام ۱ و گام ۲ را به صورت جداگانه فراهم می‌کنند، خواه روی رایانه‌های مختلف، در زمان‌های مختلف، یا با استفاده از نرم‌افزارهای مختلف (به ویژه، برنامه Prime95/mprime جورج ولتمن می‌تواند خروجی گام ۱ مناسب برای از سرگیری با GMP\-ECM را تولید کند)\&. همچنین تقسیم گام ۲ به چند اجرا با استفاده از گزینه \fIB2min\-B2max\fR می‌تواند مفید باشد\&. .PP \fB\-inp \fR\fB\fIfile\fR\fR .RS 4 خواندن ورودی از فایل \fIfile\fR به جای ورودی استاندارد\&. .RE .PP \fB\-save \fR\fB\fIfile\fR\fR .RS 4 ذخیره نتیجه گام ۱ در \fIfile\fR\&. اگر \fIfile\fR وجود داشته باشد، یک خطا ایجاد می‌شود\&. مثال: برای اجرای تنها گام ۱ با \fIB1\fR=1000000 روی عدد مرکب موجود در فایل "c155" و ذخیره نتیجه آن در فایل "foo"، استفاده کنید از: .sp .if n \{\ .RS 4 .\} .nf ecm \-save foo 1e6 1 < c155 .fi .if n \{\ .RE .\} .sp .RE .PP \fB\-savea \fR\fB\fIfile\fR\fR .RS 4 مانند \fB\-save\fR، اما به انتهای فایل‌های موجود الحاق می‌کند\&. .RE .PP \fB\-resume \fR\fB\fIfile\fR\fR .RS 4 از سرگیری باقی‌مانده‌ها از \fIfile\fR؛ در صورتی که \fIfile\fR برابر با "\-" باشد، از ورودی استاندارد می‌خواند\&. مثال: برای انجام گام ۲ در ادامه محاسبه گام ۱ فوق، استفاده کنید از: .sp .if n \{\ .RS 4 .\} .nf ecm \-resume foo 1e6 .fi .if n \{\ .RE .\} .sp .RE .PP \fB\-chkpoint \fR\fB\fIfile\fR\fR .RS 4 نوشتن دوره‌ای باقی‌مانده فعلی در مرحله ۱ در \fIfile\fR\&. در صورت قطعی برق و غیره، محاسبه می‌تواند با گزینه \fB\-resume\fR ادامه یابد\&. .sp .if n \{\ .RS 4 .\} .nf ecm \-chkpnt foo \-pm1 1e10 < largenumber\&.txt .fi .if n \{\ .RE .\} .sp .RE.SH "حالت حلقه (LOOP MODE)" .PP \(lqحالت حلقه\(rq (گزینهٔ \fB\-c \fR\fB\fIn\fR\fR) امکان اجرای چندین منحنی را روی هر عدد ورودی فراهم می‌کند\&. گزینه‌های زیر رفتار آن را کنترل می‌کنند\&. .PP \fB\-c \fR\fB\fIn\fR\fR .RS 4 اجرای \fIn\fR بار روی هر عدد ورودی (پیش‌فرض یک است)\&. این گزینه عمدتاً برای P+1 (برای مثال با \fIn\fR=3) یا برای ECM مفید است، جایی که می‌توان \fIn\fR را بر روی تعداد منحنی‌های مورد انتظار برای یافتن یک عامل d\-رقمی با کران مرحلهٔ ۱ مشخص تنظیم کرد\&. این گزینه با \fB\-resume, \-sigma, \-x0\fR ناسازگار است\&. دادن \fB\-c 0\fR یک حلقهٔ بی‌پایان تا زمان پیدا شدن یک عامل ایجاد می‌کند\&. .RE .PP \fB\-one\fR .RS 4 در حالت حلقه، با پیدا شدن یک عامل متوقف می‌شود؛ حالت پیش‌فرض ادامه دادن تا زمانی است که هم‌عامل (cofactor) اول باشد یا تعداد دفعات اجرای مشخص‌شده به پایان برسد\&. .RE .PP \fB\-b\fR .RS 4 پردازش اول‌سطح (Breadth\-first): در حالت حلقه، برای هر عدد ورودی یک منحنی اجرا می‌شود، سپس یک منحنی دوم برای هر کدام و به همین ترتیب\&. این حالت پیش‌فرض هنگام استفاده از \fB\-inp\fR است\&. .RE .PP \fB\-d\fR .RS 4 پردازش اول‌عمق (Depth\-first): در حالت حلقه، ابتدا \fIn\fR منحنی برای اولین عدد، سپس \fIn\fR منحنی برای دومین عدد و به همین ترتیب اجرا می‌شود\&. این حالت پیش‌فرض هنگام استفاده از ورودی استاندارد است\&. .RE .PP \fB\-ve \fR\fB\fIn\fR\fR .RS 4 در حالت حلقه، در اجرای دوم و دفعات پس از آن، تنها عبارت‌هایی را در خروجی نمایش می‌دهد که حداکثر \fIn\fR نویسه داشته باشند\&. مقدار پیش‌فرض \fB\-ve 0\fR است\&. .RE .PP \fB\-i \fR\fB\fIn\fR\fR .RS 4 در حالت حلقه، مقدار \fIB1\fR را پس از هر منحنی به اندازهٔ \fIn\fR افزایش می‌دهد\&. .RE .PP \fB\-I \fR\fB\fIn\fR\fR .RS 4 در حالت حلقه، مقدار \fIB1\fR را پس از هر منحنی در ضریبی وابسته به \fIn\fR ضرب می‌کند\&. مقدار پیش‌فرض یک است که روی یک سیستم بهینه خواهد بود، در حالی که می‌توان از \fB\-I 10\fR هنگام تلاش برای تجزیهٔ هم‌زمان یک عدد روی ۱۰ سیستم یکسان استفاده کرد\&. .RE .SH "اجرای دستورات پوسته (SHELL COMMAND EXECUTION)" .PP این گزینه‌ها امکان اجرای دستورات پوسته را برای گسترش قابلیت‌های GMP\-ECM فراهم می‌کنند\&. .PP \fB\-prpcmd \fR\fB\fIcmd\fR\fR .RS 4 دستور \fIcmd\fR را به جای توابع درونی خود GMP\-ECM برای آزمودن اول بودن عامل‌ها و هم‌عامل‌ها اجرا می‌کند\&. عدد مورد آزمایش از طریق stdin ارسال می‌شود\&. کد خروج 0 به عنوان \(lqاحتمالاً اول\(rq (probably prime) و کد خروج غیر صفر به عنوان \(lqمرکب\(rq (composite) تفسیر می‌شود\&. .RE .PP \fB\-faccmd \fR\fB\fIcmd\fR\fR .RS 4 هر زمان عاملی توسط P\-1 ،P+1 یا ECM پیدا شود، دستور \fIcmd\fR را اجرا می‌کند\&. عدد ورودی، عامل و هم‌عامل هر کدام در یک خط از طریق stdin فرستاده می‌شوند\&. از این گزینه می‌توان برای مثال جهت ارسال خودکار عامل‌های جدید با ایمیل استفاده کرد: .sp .if n \{\ .RS 4 .\} .nf ecm \-faccmd \*(Aqmail \-s \(lq$HOSTNAME found a factor\(rq me@myaddress\&.com\*(Aq 11e6 < cunningham\&.in .fi .if n \{\ .RE .\} .sp .RE .PP \fB\-idlecmd \fR\fB\fIcmd\fR\fR .RS 4 دستور \fIcmd\fR را پیش از شروع هر منحنی ECM یا هر تلاش P\-1 یا P+1 روی یک عدد اجرا می‌کند\&. اگر وضعیت خروج \fIcmd\fR غیر صفر باشد، GMP\-ECM فوراً خاتمه می‌یابد؛ در غیر این صورت به طور عادی ادامه می‌دهد\&. در هنگام اجرای \fIcmd\fR، برنامهٔ GMP\-ECM متوقف می‌شود؛ این سازوکار راهکاری ارائه می‌دهد تا مثلاً در هنگام شلوغ بودن سیستم بتوان GMP\-ECM را به حالت خواب درآورد\&. .RE.SH "متفرقه (MISCELLANEOUS)" .PP \fB\-n\fR .RS 4 اجرای برنامه در حالت \(lqnice\(rq (اولویت کمتر از حالت عادی)\&. .RE .PP \fB\-nn\fR .RS 4 اجرای برنامه در حالت \(lqvery nice\(rq (اولویت بی‌کار یا idle)\&. .RE .PP \fB\-B2scale \fR\fB\fIf\fR\fR .RS 4 ضرب کردن کران پیش‌فرض مرحله ۲ \fIB2\fR در مقدار ممیز شناور \fIf\fR\&. مثال: \fB\-B2scale 0\&.5\fR مقدار پیش‌فرض \fIB2\fR را بر ۲ تقسیم می‌کند\&. .RE .PP \fB\-stage1time \fR\fB\fIn\fR\fR .RS 4 افزودن \fIn\fR ثانیه به زمان مرحله ۱\&. این گزینه برای به دست آوردن زمان مورد انتظار دقیق با \fI\-v\fR در صورتی که بخشی از مرحله ۱ در اجرای دیگری انجام شده باشد، مفید است\&. .RE .PP \fB\-cofdec\fR .RS 4 اجبار خروجی کوفاکتور به صورت ده‌دهی (حتی در صورت استفاده از عبارات محاسباتی)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 نمایش توضیحی کوتاه از نحوه استفاده ecm، پارامترها و گزینه‌های خط فرمان\&. .RE .PP \fB\-printconfig\fR .RS 4 چاپ پارامترهای پیکربندی استفاده‌شده برای کامپایل و خروج از برنامه\&. .RE .SH "ساختار ورودی (INPUT SYNTAX)" .PP اعداد ورودی می‌توانند چندین حالت داشته باشند: .PP اعداد ده‌دهی خام مانند 123456789\&. .PP می‌توان در فایل از کامنت استفاده کرد: همه چیز بعد از \(lq//\(rq تا انتهای خط نادیده گرفته می‌شود\&. .PP ادامه خط\&. اگر خطی به نویسه بک‌اسلش \(lq\e\(rq ختم شود، ادامه‌دار در نظر گرفته شده و در خط بعدی دنبال می‌شود\&. .PP می‌توان از عبارات محاسباتی رایج استفاده کرد\&. مثال: \fI3*5+(2+7)^10\fR\&. .PP فاکتوریل: مثال \fI53!\fR\&. .PP چندفاکتوریل: برای مثال \fI15!3\fR به معنی 15*12*9*6*3 است\&. .PP پریموریل (Primorial): برای مثال \fI11#\fR به معنی 2*3*5*7*11 است\&. .PP پریموریل کاهش‌یافته: برای مثال \fI17#5\fR به معنی 5*7*11*13*17 است\&. .PP توابع: .PP GCD(a,b): بزرگ‌ترین مقسوم‌علیه مشترک .RS 4 مثال: GCD(120,28) = 4 .RE .PP Phi(n,x): n\-امین چندجمله‌ای دایره‌بر (سیکلوتومیک) محاسبه‌شده در x .RS 4 مثال: Phi(3,5) = 1 + x + x^2 = 31 .RE.SH "وضعیت خروج (EXIT STATUS)" .PP وضعیت خروج، نتیجه آخرین منحنی ECM یا تلاش P\-1/P+1 انجام‌شده توسط برنامه را نشان می‌دهد\&. بیت‌های منفرد نشان‌دهنده رویدادهای مشخصی هستند، به‌ویژه: .PP بیت 0 .RS 4 0 در صورت پایان عادی برنامه، 1 در صورت وقوع خطا .RE .PP بیت 1 .RS 4 0 اگر هیچ عامل سره‌ای یافت نشد، 1 در غیر این صورت .RE .PP بیت 2 .RS 4 0 اگر عامل مرکب باشد، 1 اگر عامل احتمالاً اول باشد .RE .PP بیت 3 .RS 4 0 اگر هم‌عامل مرکب باشد، 1 اگر هم‌عامل احتمالاً اول باشد .RE .PP بنابراین، مقادیر وضعیت خروج زیر ممکن است رخ دهند: .PP 0 .RS 4 خاتمه عادی برنامه، هیچ عاملی یافت نشد .RE .PP 1 .RS 4 خطا .RE .PP 2 .RS 4 عامل مرکب یافت شد، هم‌عامل مرکب است .RE .PP 6 .RS 4 عامل احتمالاً اول یافت شد، هم‌عامل مرکب است .RE .PP 8 .RS 4 عدد ورودی یافت شد .RE .PP 10 .RS 4 عامل مرکب یافت شد، هم‌عامل احتمالاً اول است .RE .PP 14 .RS 4 عامل احتمالاً اول یافت شد، هم‌عامل احتمالاً اول است .RE .SH "گزارش باگ‌ها (BUGS)" .PP گزارش باگ‌ها را به ارسال کنید\&. .SH "نویسندگان (AUTHORS)" .PP Pierrick Gaudry کد اسمبلی کارآمدی برای mul/redc ترکیبی ارائه کرده است؛ .PP Jim Fougeron در نوشتن تجزیه‌کننده عبارت و چندین گزینه خط فرمان مشارکت داشته است؛ .PP Laurent Fousse در نوشتن کد ضرب میانی (middle product) و ابزارهای autoconf/automake مشارکت داشته و نگه‌دارنده بسته Debian است؛ .PP Alexander Kruppa <(lastname)al@loria\&.fr> در برآورد احتمال موفقیت برای ECM، مرحله دوم جدید P+1 و P\-1 (به همراه P\&.\-L\&. Montgomery)، کد جدید اسمبلی AMD64 برای mulredc و برخی موارد دیگر مشارکت داشته است؛ .PP Dave Newman کد ضرب Kronecker\-Schoenhage و NTT را ارائه کرده است؛ .PP Jason S\&. Papadopoulos در افزایش سرعت کد NTT مشارکت داشته است .PP Paul Zimmermann نویسنده نسخه نخست برنامه و نگه‌دارنده اصلی GMP\-ECM است\&. .PP نکته: نشانی‌های ایمیل مبهم‌سازی شده‌اند، جایگزینی‌های لازم باید آشکار باشند\&.