به محفل ریاضی ایرانیان خوش آمدید! لطفا برای استفاده از تمامی امکانات عضو شوید
+1 امتیاز
267 بازدید
در دانشگاه توسط ناصر آهنگرپور (2,222 امتیاز)
ویرایش شده توسط ناصر آهنگرپور

با درود به همراهان و اساتید گرامی. چگونه از خواص اعداد اول در پایتون استفاده کنیم تا سرعت پردازش پایتون در تشخیص و فهرست کردن آنها بین دو بازه دلخواه چندین برابر شود؟

تلاش خودم: خاصیتی در اعداد اول است که اگر بدرستی استفاده شود، میتواند سرعت پردازش پایتون در این مورد را بطور چشمگیری افزایش دهد. این خاصیت بشرح زیر است.

غیر از اعداد اول $(2,3)$، همه اعداد اول بشکل $(6n+1)$ یا $(6n-1)$ هستند.

میتوان از یک تابع قابل فراخوانی برای تشخیص اعداد اول استفاده کرد که در برنامه دوم اعداد اول بین دو بازه دلخواه را فهرست کند و در هردو برنامه میتوان از خاصیت فوق استفاده کرد که در اینصورت در هر دو برنامه از هر ده عدد فقط چهار عدد پردازش میشود. سؤال این است که چگونه این دو برنامه را بنویسیم؟

1 پاسخ

+2 امتیاز
توسط mahdiahmadileedari (3,096 امتیاز)
ویرایش شده توسط mahdiahmadileedari

می‌توانید از کتابخان$ه sympy$ استفاده کنید. این کتابخانه دارای تابع $sieve.primerange$ است که بین دو عدد مشخص، تمام اعداد اول را بازگردانده و در یک لیست قرار می‌دهد.

به عنوان مثال، برای فهرست کردن تمام اعداد اول بین $۱۰۰۰۰۰ $و $۱۰۵۰۰۰$، می‌توانید از کد زیر استفاده کنید:

$ python from sympy import sieve primes = list(sieve.primerange(100000, 105000)) print(primes) این کد تمام اعداد اول بین$ ۱۰۰۰۰۰ $و $۱۰۵۰۰۰$ را فهرست می‌کند و در لیست$ primes $قرار می‌دهد. سپس با استفاده از دستور$ print$، این لیست را چاپ می‌کنیم. با استفاده از این الگوریتم، می‌توانید سرعت پردازش پایتون در تشخیص و فهرست کردن اعداد اول را چندین برابر افزایش دهید. برای مثال، به جای بررسی تمام اعداد تا$ n $برای تشخیص اعداد اول، می‌توانید فقط اعداد$ ۶n±۱ $را بررسی کنید. این کار باعث کاهش تعداد اعداد بررسی شده و افزایش سرعت الگوریتم می‌شود.

توسط ناصر آهنگرپور (2,222 امتیاز)
ویرایش شده توسط ناصر آهنگرپور
+1
@mahdiahmadileedari : با درود به دوست و استاد گرامی. بسیار عالی بود. در برخی از کتابها و برنامه های اندرویدی آموزشی پایتون همه اعداد تا $sqrt(n)$ را برای تشخیص عدد اول پردازش میکنند. میخواستم بدانم اگر خودمان بخواهیم برنامه‌ای در این جهت بنویسیم، با استفاده از خاصیت مذکور در سؤال چگونه میتوان سرعتش را افزایش داد. از همراهی صمیمانه و اطلاعات مفیدتان سپاسگزارم. 1+
این چرخ فلک که ما در او حیرانیم<br> فانوس خیال از او مثالی دانیم<br> خورشید چراغ دان و عالم فانوس<br> ما چون صوریم کاندرو حیرانیم
...