'\" t .\" Title: primesieve .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 02/17/2024 .\" Manual: \ \& .\" Source: \ \& .\" Language: Persian .\" .TH "PRIMESIEVE" "1" "02/17/2024" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * 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)" primesieve \- تولید اعداد اول .SH "خلاصه دستور (SYNOPSIS)" .sp \fBprimesieve\fR [\fISTART\fR] \fISTOP\fR [\fIOPTION\fR]\&... .SH "توضیحات (DESCRIPTION)" .sp تولید اعداد اول و/یا چندتایی‌های اول (k\-tuplets) درون بازهٔ [\fISTART\fR, \fISTOP\fR] (< 2^64) با استفاده از غربال اراتستن بخش‌بندی‌شده (segmented sieve of Eratosthenes)\&. ابزار primesieve شامل چندین بهینه‌سازی و الحاقیه به غربال اراتستن است که کارایی را به طور چشمگیری افزایش می‌دهند: مضارب اعداد اول کوچک از پیش غربال می‌شوند، از تجزیهٔ چرخشی (wheel factorization) برای نادیده گرفتن مضارب با عوامل اول کوچک استفاده می‌کند و الگوریتم غربال سطلی (bucket sieve) را به کار می‌برد که کارایی حافظهٔ نهان (cache) را هنگام غربال مقادیر > 2^32 بهبود می‌بخشد\&. همچنین primesieve چندنخی (multi\-threaded) است؛ این ابزار به طور پیش‌فرض از تمام هسته‌های پردازندهٔ موجود برای شمارش اعداد اول و یافتن n\-امین عدد اول استفاده می‌کند\&. .sp غربال اراتستن بخش‌بندی‌شده دارای پیچیدگی زمانی O(n log log n) عملیات بوده و از O(n^(1/2)) بیت حافظه استفاده می‌کند\&. به‌طور دقیق‌تر، primesieve به ازای هر عدد اول در حال غربال، ۸ بایت مصرف می‌کند؛ بنابراین حافظهٔ مصرفی آن تقریباً با رابطهٔ PrimePi(n^(1/2)) * 8 بایت (به ازای هر نخ) قابل تقریب است\&. .SH "گزینه‌ها (OPTIONS)" .PP \fB\-c\fR[\fINUM+\fR], \fB\-\-count\fR[=\fINUM+\fR] .RS 4 شمارش اعداد اول و/یا چندتایی‌های اول، 1 <= \fINUM\fR <= 6\&. شمارش اعداد اول: \fB\-c\fR یا \fB\-\-count\fR، شمارش اعداد اول دوقلو: \fB\-c2\fR یا \fB\-\-count=2\fR، شمارش اعداد اول سه‌گانه: \fB\-c3\fR یا \fB\-\-count=3\fR، و غیره\&. همچنین می‌توانید اعداد اول و چندتایی‌های اول را هم‌زمان بشمارید؛ برای نمونه \fB\-c123\fR اعداد اول، اول دوقلو و اول سه‌گانه را می‌شمارد\&. .RE .PP \fB\-\-cpu\-info\fR .RS 4 چاپ اطلاعات پردازنده: نام پردازنده، بسامد، تعداد هسته‌ها، اندازهٔ حافظه‌های نهان و غیره\&. .RE .PP \fB\-d, \-\-dist\fR=\fIDIST\fR .RS 4 غربال بازهٔ [\fISTART\fR, \fISTART\fR + \fIDIST\fR]\&. .RE .PP \fB\-h, \-\-help\fR .RS 4 نمایش این منوی راهنما\&. .RE .PP \fB\-n, \-\-nth\-prime\fR .RS 4 یافتن n\-امین عدد اول؛ برای نمونه 100 \fB\-n\fR صدمین عدد اول را می‌یابد\&. اگر دو عدد \fIN\fR \fISTART\fR مشخص شوند، n\-امین عدد اول > \fISTART\fR را پیدا می‌کند؛ برای نمونه 2 100 \fB\-n\fR دومین عدد اول > 100 را می‌یابد\&. .RE .PP \fB\-\-no\-status\fR .RS 4 غیرفعال کردن نمایش وضعیت پیشرفت\&. .RE .PP \fB\-p\fR[\fINUM\fR], \fB\-\-print\fR[=\fINUM\fR] .RS 4 چاپ اعداد اول یا چندتایی‌های اول، 1 <= \fINUM\fR <= 6\&. چاپ اعداد اول: \fB\-p\fR، چاپ اعداد اول دوقلو: \fB\-p2\fR، چاپ اعداد اول سه‌گانه: \fB\-p3\fR، و غیره\&. .RE .PP \fB\-q, \-\-quiet\fR .RS 4 حالت بی‌صدا، خروجی کمتری چاپ می‌کند\&. .RE .PP \fB\-R, \-\-RiemannR\fR .RS 4 تقریب PrimePi(x) با استفاده از تابع R ریمان: R(x)\&. .RE .PP \fB\-\-RiemannR\-inverse\fR .RS 4 تقریب n\-امین عدد اول با استفاده از معکوس تابع R ریمان: R^\-1(x)\&. .RE .PP \fB\-s, \-\-size\fR=\fISIZE\fR .RS 4 تنظیم اندازهٔ آرایهٔ غربال بر حسب KiB، به طوری که 16 <= \fISIZE\fR <= 8192 باشد\&. به طور پیش‌فرض primesieve از اندازه‌ای استفاده می‌کند که با اندازهٔ حافظهٔ نهان L1 پردازنده (به ازای هر هسته) همخوانی داشته باشد یا کمی کوچک‌تر از اندازهٔ حافظهٔ نهان L2 پردازنده باشد\&. این تنظیم تأثیر چشمگیری بر کارایی دارد؛ در پردازنده‌های نامتعارف، گاهی primesieve در شناسایی اندازهٔ حافظهٔ نهان پردازنده ناموفق است که معمولاً افت سرعت شدیدی ایجاد می‌کند\&. در این حالت می‌توانید با تنظیم دستی اندازهٔ غربال به میزان اندازهٔ حافظهٔ نهان L1 یا L2 پردازنده (به ازای هر هسته)، کارایی را به‌طور قابل توجهی بهبود بخشید\&. .RE .PP \fB\-S, \-\-stress\-test\fR[=\fIMODE\fR] .RS 4 اجرای آزمون پایداری و فشار (stress test)\&. مقدار \fIMODE\fR می‌تواند CPU (پیش‌فرض) یا RAM باشد\&. حالت CPU حافظهٔ کمی مصرف می‌کند (< 5 MiB به ازای هر نخ) و بیشترین بار را بر پردازنده وارد می‌کند\&. در مقابل، حالت RAM بسیار بیشتر از حالت CPU حافظه مصرف می‌کند (هر نخ حدود 1\&.16 GiB)، اما دمای پردازنده معمولاً به اندازهٔ حالت CPU بالا نخواهد رفت\&. آزمون فشار تا زمانی که یک خطای محاسباتی رخ دهد (به دلیل نقص سخت‌افزاری) یا مهلت زمانی به پایان برسد، به کار خود ادامه می‌دهد\&. مهلت زمانی پیش‌فرض ۲۴ ساعت است که می‌توان آن را با گزینهٔ \fB\-\-timeout=SECS\fR تغییر داد\&. آزمون فشار به طور پیش‌فرض به تعداد هسته‌های پردازنده از نخ‌ها استفاده می‌کند؛ تعداد نخ‌ها با استفاده از گزینهٔ \fB\-\-threads=NUM\fR قابل تغییر است\&. .RE .PP \fB\-\-test\fR .RS 4 اجرای آزمون‌های درستی‌سنجی گوناگون (< 1 دقیقه)\&. .RE .PP \fB\-t, \-\-threads\fR=\fINUM\fR .RS 4 تنظیم تعداد نخ‌ها، 1 <= \fINUM\fR <= تعداد هسته‌های پردازنده\&. به طور پیش‌فرض primesieve از تمام هسته‌های پردازندهٔ در دسترس برای شمارش اعداد اول و یافتن n\-امین عدد اول استفاده می‌کند\&. .RE .PP \fB\-\-time\fR .RS 4 چاپ زمان سپری‌شده بر حسب ثانیه\&. .RE .PP \fB\-\-timeout\fR=\fISECS\fR .RS 4 تنظیم مهلت زمانی آزمون فشار بر حسب ثانیه\&. واحدهای زمانی برای ثانیه، دقیقه، ساعت، روز و سال با پسوندهای s، m، h، d یا y نیز پشتیبانی می‌شوند؛ برای نمونه \fB\-\-timeout 10m\fR مهلت زمانی را روی ۱۰ دقیقه تنظیم می‌کند\&. مهلت پیش‌فرض آزمون فشار ۲۴ ساعت است\&. .RE .PP \fB\-v, \-\-version\fR .RS 4 چاپ نگارش و اطلاعات مجوز\&. .RE .SH "مثال‌ها (EXAMPLES)" .PP \fBprimesieve 1000\fR .RS 4 شمارش اعداد اول <= 1000\&. .RE .PP \fBprimesieve 1e6 \-\-print\fR .RS 4 چاپ اعداد اول <= 10^6\&. .RE .PP \fBprimesieve 1e6 \-\-print > primes\&.txt\fR .RS 4 ذخیرهٔ اعداد اول <= 10^6 در یک فایل متنی\&. .RE .PP \fBprimesieve 2^32 \-\-print=2\fR .RS 4 چاپ اعداد اول دوقلو <= 2^32\&. .RE .PP \fBprimesieve 1e16 \-\-dist=1e10 \-\-threads=1\fR .RS 4 شمارش اعداد اول درون بازهٔ [10^16, 10^16 + 10^10] با استفاده از تنها یک نخ\&. .RE .SH "وبگاه (HOMEPAGE)" .sp https://github.com/kimwalisch/primesieve .SH "نویسندگان (AUTHORS)" .sp Kim Walisch