PDA

View Full Version : گفتگو: پروژه بزرگ برنامه نویسی



MP.C-Writer
جمعه 12 اسفند 1390, 11:45 صبح
سلام دوستان.می خواستم یه پروژه بزرگی رو راه اندازی کنم گفتم اینجا مطرح کنم تا توسط همه دوستان پیگیری بشه و إن شاءالله به یه نتیجه خوب برسه.

می خواهیم اعدادی رو با 2 الی 3 میلیون رقم دریافت کنیم و سپس بررسی کنیم که این عدد اول هست یا نه ( به همین سادگی! البته یه بخشی از کار واقعا ساده است. ولی یه بخش دیگه اش سخت میشه و سختی اش هم به خاطر حجم زیاد کاره) اگر مایل هستید، توضیحات بیشتر رو ارائه بدم تا پروژه رو کلید بزنیم. هر کی مرد این میدونه یا علی همین جا اعلام بکنه.

ho3ein.3ven
جمعه 12 اسفند 1390, 11:54 صبح
عدد 2-3 میلیون رقمی ؟ فک می کنم دنیس ریچی سازنده زبان سی پلاس پلاس هم بیاری نتونه اینو بنویسه .

shahabbasic
جمعه 12 اسفند 1390, 11:58 صبح
حالا بر فرض که اینو بنویسی به چه درد میخوره؟ البته برای ثبت در رکوردهای گینس خوبه

IamOverlord
جمعه 12 اسفند 1390, 11:58 صبح
اگر زمان برات مهم نباشه، حله. البته می شه یه کارایی کرد که سرعت کار بالاتر بره... اما توجه داشته باش 2 3 میلیون کاراکتر می شه 2 3 مگابایت!

MP.C-Writer
جمعه 12 اسفند 1390, 11:59 صبح
عدد 2-3 میلیون رقمی ؟ فک می کنم دنیس ریچی سازنده زبان سی پلاس پلاس هم بیاری نتونه اینو بنویسه .

با اجازه شما آخرین عدد اولی که کشف شده 12 میلیون رقم داشته. خیلی هم ساده است. اگر دو سه نفر از بچه ها جمع بشن و کمک کنند، ان شاءالله می تونیم بنویسیم. یادت نره که ما می توانیم

IamOverlord
جمعه 12 اسفند 1390, 12:35 عصر
ما می توانیم که معلومه، مهم توانایی کامپیوتر ها مونه :لبخند: !
ضمنا یه روش سریع برای این که بفهمیم یه عدد اول هست یا نه پیدا کرم که تو این برنامه پیاده سازیش کردم:

Veteran
جمعه 12 اسفند 1390, 13:51 عصر
می خواهیم اعدادی رو با 2 الی 3 میلیون رقم دریافت کنیم و سپس بررسی کنیم که این عدد اول هست یا نه
چه متغیری تا 3 میلیون رقم میتونه مقدار بگیره ؟ :متفکر:

M0TR!X
جمعه 12 اسفند 1390, 13:54 عصر
سلام.

دوست عزیز واسه این جور رقم ها دیگه عدد رو تو یه تغییر نمیریزن که ! 100% باید ارایه باشه هر رقم تو یه خونه قرار بگیره

Veteran
جمعه 12 اسفند 1390, 14:02 عصر
سلام دوستان.می خواستم یه پروژه بزرگی رو راه اندازی کنم گفتم اینجا مطرح کنم تا توسط همه دوستان پیگیری بشه و إن شاءالله به یه نتیجه خوب برسه.

می خواهیم اعدادی رو با 2 الی 3 میلیون رقم دریافت کنیم و سپس بررسی کنیم که این عدد اول هست یا نه ( به همین سادگی! البته یه بخشی از کار واقعا ساده است. ولی یه بخش دیگه اش سخت میشه و سختی اش هم به خاطر حجم زیاد کاره) اگر مایل هستید، توضیحات بیشتر رو ارائه بدم تا پروژه رو کلید بزنیم. هر کی مرد این میدونه یا علی همین جا اعلام بکنه.
خب بعد که فهمیدیم عدد 3 میلیونی ما اول هست یا نه چی میشه ؟

Veteran
جمعه 12 اسفند 1390, 14:18 عصر
ما می توانیم که معلومه، مهم توانایی کامپیوتر ها مونه :لبخند: !
ضمنا یه روش سریع برای این که بفهمیم یه عدد اول هست یا نه پیدا کرم که تو این برنامه پیاده سازیش کردم:
درست متوجه نشدم.
چیکار میکنه این ؟

Mr'Jamshidy
جمعه 12 اسفند 1390, 14:28 عصر
شدن که میشه اما آخرش به چه دردی میخوره؟

شما نوشتی پروژه بزرگ

یکم کامل تر توضیح بدید (پروژه رو فهمیدم چی میخواید اما نتیجه رو نفهمیدم)

maktoom
جمعه 12 اسفند 1390, 15:14 عصر
سلام
اعداد اول کارایی کلیدی دارن.
بدین شکل که از اون ها برای کد کردن اطلاعات استفاده میشه. برای همین هم سرویسهای اطلاعاتی همیشه به دنبال بزرگترین اعداد اول هستن.
تا اونجا که در دانشگاه شنیدم هر کشوری که بزرگترین عدد اول رو داره می تونه کدهای دیگر کشور ها رو براحتی(هزینه های سرسام آوری قبلا برای این "براحتی" صرف شده) بشکنه.
درحال حاضر بزرگترین عدد اول کشف شده دو بتوان نود رقم داره که در دست روسیه است که البته بوسیله رندوم این عدد رو کشف کرده.(یکی از روشهای موثر در پیدا کردن اعداد اول روش تصادفیه)
سالانه شرکتهای بزرگی هستن که جوایز نقدی هنگفتی برای اعداد بین 500 هزار رقم تا 2 میلیون رقم یا بالاتر رو به کسانی که این اعداد رو کشف کنن و تحویل بدن می پردازن.
سالانه مقالاتی در مورد روش های جدید پیدا کردن اعداد اول چاپ میشه. شما نمی تونید بدون خوندن این مقالات چیز درستی بدست بیارید.

IamOverlord
جمعه 12 اسفند 1390, 15:36 عصر
می خواهیم اعدادی رو با 2 الی 3 میلیون رقم دریافت کنیم و سپس بررسی کنیم که این عدد اول هست یا نه
چه متغیری تا 3 میلیون رقم میتونه مقدار بگیره ؟ :متفکر:

Private Sub Command1_Click()
For i = 1 To 10000
s = s + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Next i
' 10000 * 100 = 1000000
MsgBox Len(s)
End Sub

IamOverlord
جمعه 12 اسفند 1390, 15:42 عصر
درست متوجه نشدم.
چیکار میکنه این ؟


http://upload.wikimedia.org/wikipedia/en/math/e/e/2/ee28e8692579a6c89ce7cc105639fbd5.png

IamOverlord
جمعه 12 اسفند 1390, 15:45 عصر
سلام
اعداد اول کارایی کلیدی دارن.
بدین شکل که از اون ها برای کد کردن اطلاعات استفاده میشه. برای همین هم سرویسهای اطلاعاتی همیشه به دنبال بزرگترین اعداد اول هستن.
تا اونجا که در دانشگاه شنیدم هر کشوری که بزرگترین عدد اول رو داره می تونه کدهای دیگر کشور ها رو براحتی(هزینه های سرسام آوری قبلا برای این "براحتی" صرف شده) بشکنه.
درحال حاضر بزرگترین عدد اول کشف شده دو بتوان نود رقم داره که در دست روسیه است که البته بوسیله رندوم این عدد رو کشف کرده.(یکی از روشهای موثر در پیدا کردن اعداد اول روش تصادفیه)
سالانه شرکتهای بزرگی هستن که جوایز نقدی هنگفتی برای اعداد بین 500 هزار رقم تا 2 میلیون رقم یا بالاتر رو به کسانی که این اعداد رو کشف کنن و تحویل بدن می پردازن.
سالانه مقالاتی در مورد روش های جدید پیدا کردن اعداد اول چاپ میشه. شما نمی تونید بدون خوندن این مقالات چیز درستی بدست بیارید.

مطمئنا مشابه برنامه ای که ما نوشتیم رو اونا می تونن روی ابرکامپیوتر هاشون اجرا کنن و نتایج بهتری بگیرن. به نظرم دنبال کشیدن تصاویر مختلف از اعداد اول و این جور کار ها باشیم جذاب تره ... .

MP.C-Writer
جمعه 12 اسفند 1390, 17:41 عصر
دوستان روشی که من مد نظرم هست اینه که یه کلاس تعریف کنیم که عدد مورد نظر ما رو به صورت رشته بگیره و اعمال اصلی رو به صورت رشته ای روش انجام بده و بعد بگه اول هست یا نه. برای این کار هم می تونیم از یک دیتابیس استفاده کنیم. چند تا عدد اول اولیه رو بهش می دیم. بعد برنامه با تقسیم اعداد بعدی به این اعداد تصمیم می گیره که اون ها اول هستند یا نه. وقتی یک عدد اول جدید شناسایی شد به دیتابیس اضافه میشه.
البته برای بعضی از اعداد می تونیم از قوانین بخش پذیری استفاده کنیم. مثلا تقسیم بر 2 و 3 و5 7 و 9 و11 و 13 قانون دارند. پس کار راحت تر میشه.

Veteran
جمعه 12 اسفند 1390, 17:49 عصر
اگر اشتباه نکنم عدد اول عددی هست که فقط بر خودش و یک بخش پذیر هست
حالا
شما یک عدد 3 میلیون رقمی در نظر بگیرید
ما باید از 1 تا اون عدد 3 میلیون رقمی یکی یکی بریم بالا بعد شمارنده خودمون که داره افزایش پیدا میکنه رو تقسیم بر مقدار ورودی(عدد 3 میلیون رقمی کنیم)بعد باقیمانده رو به دست بیاریم اگر 0 شد یک متعیر رو یک واحد افزایش بدیم.
بعد از اتمام کار اگر اون متغیر ما که در صورت 0 بودن باقیمانده یک واحد افزایش پیدا میکرد برابر با 2 بود
یعنی عدد اول هست
فکرش وحشتناکه !!! عدد 3 میلیون رقمی :متعجب:

shahabbasic
جمعه 12 اسفند 1390, 17:52 عصر
اگر اشتباه نکنم عدد اول عددی هست که فقط بر خودش و یک بخش پذیر هست
اهههههههههه پسر چجوری به این نتیجه رسیدی؟

Veteran
جمعه 12 اسفند 1390, 17:53 عصر
به سختی:قهقهه:

MP.C-Writer
جمعه 12 اسفند 1390, 17:58 عصر
ببینید بچه ها هدف ما پیدا کردن یک عدد اول بزرگ نیست. ما می خواهیم مجموعه ای از اعداد اول بزرگ رو در اختیار داشته باشیم. به نظرم همون دیتابیس بهتر باشه. اما در مورد این اظهارنظر دوستمون که گفتند:

ما باید از 1 تا اون عدد 3 میلیون رقمی یکی یکی بریم بالا بعد شمارنده خودمون که داره افزایش پیدا میکنه رو تقسیم بر مقدار ورودی(عدد 3 میلیون رقمی کنیم)بعد باقیمانده رو به دست بیاریم اگر 0 شد یک متعیر رو یک واحد افزایش بدیم.
باید بگم که لازم نیست بر همه اعداد عمل تقسیم رو انجام بدیم. اگر عددی بر اعداد اول کوچکتر از جذر خودش بخش پذیر نباشه اوله. تازه خیلی راحت می تونیم توی هر 10 تا عدد 4 تا رو بررسی کنیم.(عدد اول نمی تونه یکان زوج و یا 5 داشته باشه چون بر 2 یا 5 بخش پذیر میشه) قوانین بخش پذیری رو که بلدید دیگه؟

just4froum
جمعه 12 اسفند 1390, 18:13 عصر
درحال حاضر بزرگترین عدد اول کشف شده دو بتوان نود رقم داره که در دست روسیه است که البته بوسیله رندوم این عدد رو کشف کرده.

این که دیگه اول نیست چون بر دو بخشپذیره.

MP.C-Writer
جمعه 12 اسفند 1390, 18:16 عصر
نه خیر عزیزم. توجه نکردی دو به توان 90 تا رقم داره نه این که عدد 2 به توان 90 است.

just4froum
جمعه 12 اسفند 1390, 18:18 عصر
درضمن این مسئله ی ساده رو چرا انقدر بزرگش کردین!!! با یه روش خیلی ساده تر میشه یک عدد اول پیدا کرد.
شما میاین اعداد اول بین 1 تا 10000 را پیدا می کنید بعد همشون رو در هم ضرب می کنید بعد به اضافه یک می کنید عدد بدست اومده اول هست.
خیلی هم بزرگ میشه با یک کامپیوتر ساده هم میشه چنین کاری رو انجام داد ( البته فقط مرحله پیدا کردن اعداد اول )

به عنوان مثال :
2*3*5*7 = 210
210+1 = 211
211 یک عدد اول هست

به همین سادگی.

just4froum
جمعه 12 اسفند 1390, 18:19 عصر
نه خیر عزیزم. توجه نکردی دو به توان 90 تا رقم داره نه این که عدد 2 به توان 90 است.

حق با شماست

MP.C-Writer
جمعه 12 اسفند 1390, 18:25 عصر
دوست عزیز. طبق این روش فقط تعدادی از اعداد اول رو می تونیم تولید کنیم. ولی ما می خواهیم تمام اعداد اول از 1 تا اون عدد 3میلیون رقمی رو تولید کنیم.
مثلا نمی تونیم عدد 11 یا 29 رو طبق این روش به دست بیاریم. حالا برای ضرب کردن اعداد اول در هم از کجا باید همه اعداد اول رو بیاریم؟

ho3ein.3ven
جمعه 12 اسفند 1390, 18:25 عصر
حق با شماست
پس در این صورت 2 به توان 3 هم باید اول باشه.

MP.C-Writer
جمعه 12 اسفند 1390, 18:27 عصر
برای چی باید اول باشه؟

ho3ein.3ven
جمعه 12 اسفند 1390, 18:40 عصر
من می خوام بگم که 2 به توان هر عددی برسه اول نیست.

just4froum
جمعه 12 اسفند 1390, 18:43 عصر
من می خوام بگم که 2 به توان هر عددی برسه اول نیست.

شما هم داری اشتباه منو می کنی.

تعداد ارقامش این تعداد مثلا 1234 تعداد ارقامش دو به توان 2 هست.

MP.C-Writer
جمعه 12 اسفند 1390, 18:48 عصر
البته اعداد اول مرسن این طوری تولید می شوند. البته این ها هم فقط تعدادی از اعداد اول هستند: (2^(2^n) ) +1

ho3ein.3ven
جمعه 12 اسفند 1390, 21:41 عصر
شما برای من یه عددی بیار که 2 به توان اون برسه و عدد اول باشه.

just4froum
جمعه 12 اسفند 1390, 21:51 عصر
شما به فرمول نگاه کن می بینی که آخرش به اضافه 1 داره

just4froum
جمعه 12 اسفند 1390, 22:02 عصر
مثل دو به توان 4 به اضافه 1

MP.C-Writer
جمعه 12 اسفند 1390, 22:40 عصر
دوستان از بحث منحرف شدیم. برگردید به بحث اصلی لطفا

maktoom
شنبه 13 اسفند 1390, 00:50 صبح
سلام
این لینک (http://www.primenumbersformula.com/)رو ببینید. من نمی دونم تا چه حد میشه به صحتش اطمینان داشت.
اما من یادمه اویلر برای اعداد اول یه فرمولی داشت (http://en.wikipedia.org/wiki/Prime_number)که شرطهایی اون رو محصور کرده بودن که گرچه به این دلیل فرمول عمومیت نداشت اما هنوز هم پایه خیلی از محاسبات برای اعداد اوله.

اینجا (http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&cts=1330723421985&sqi=2&ved=0CEkQFjAD&url=http%3A%2F%2Fwww.schoolnet.ir%2F~koleini%2Fdoc %2Fadad-aval.doc&ei=TDpRT5itLOKP0AWU4djfCw&usg=AFQjCNHqT5JECTn9_RIA3R86h4E6_sha2w) و اینجا (http://fa.wikipedia.org/wiki/%D8%B9%D8%AF%D8%AF_%D8%A7%D9%88%D9%84) و اینجا (http://www.mersenne.org/) رو هم مطالعه کنید.

و خوب برای اینکه واقعا بدونیم داریم در مورد چی صحبت می کنیم اینجا (http://prime.isthe.com/chongo/tech/math/prime/m43112609/prime-c.html) رو ببینید.
این لینکها رو هم ببینید: اینجا (http://www.sampadia.com/forum/index.php?topic=10008.0) و اینجا (http://www.tarfandestan.com/forum/thread7504.html)

موفق باشید

IamOverlord
شنبه 13 اسفند 1390, 06:04 صبح
اگر اشتباه نکنم عدد اول عددی هست که فقط بر خودش و یک بخش پذیر هست
حالا
شما یک عدد 3 میلیون رقمی در نظر بگیرید
ما باید از 1 تا اون عدد 3 میلیون رقمی یکی یکی بریم بالا بعد شمارنده خودمون که داره افزایش پیدا میکنه رو تقسیم بر مقدار ورودی(عدد 3 میلیون رقمی کنیم)بعد باقیمانده رو به دست بیاریم اگر 0 شد یک متعیر رو یک واحد افزایش بدیم.
بعد از اتمام کار اگر اون متغیر ما که در صورت 0 بودن باقیمانده یک واحد افزایش پیدا میکرد برابر با 2 بود
یعنی عدد اول هست
فکرش وحشتناکه !!! عدد 3 میلیون رقمی :متعجب:

خوب اون تابعی که گذاشتم کارو سریع تر می کرد دیگه.

IamOverlord
شنبه 13 اسفند 1390, 06:27 صبح
سلام
این لینک (http://www.primenumbersformula.com/)رو ببینید. من نمی دونم تا چه حد میشه به صحتش اطمینان داشت.
...
موفق باشید

برفرض که فرمولش درست باشه، قبلا این مدل فرمول ها (که با براکت و سیگما و ... هستند) ارائه شده.

en.wikipedia.org/wiki/Formula_for_primes (http://en.wikipedia.org/wiki/Formula_for_primes)

اگه ویکی پدیا رو ببینی می گه که هنوز فرمولی که به راحتی قابل محاسبه باشه پیدا نشده؛ بعدشم یه فرمول می ده که Sebastián Martín-Ruiz داده و اثباتش هم Jonathan Sondow کرده.

math.stackexchange.com/questions/88033/formula-for-the-nth-prime-number-discovered (http://math.stackexchange.com/questions/88033/formula-for-the-nth-prime-number-discovered)

maktoom
شنبه 13 اسفند 1390, 07:37 صبح
خب فرمولها عموما با نمادهای ریاضی بیان میشن. این طبیعیه.
اما فرمولهای ارائه شده ،اونها که صحتشون اثبات شده، گرچه فقط بخشی از اعداد اول رو پوشش بدن و بسیاری دیگه رو از دست بدن باز هم با ارزش هستن.
مشکل اصلی فرمولهای فعلی اینه که تمام اعداد اول رو پوشش نمی دن و فقط تا یه مرزی از اعداد جواب درستی بدست میدن.

IamOverlord
شنبه 13 اسفند 1390, 07:59 صبح
خوب با نماد های ریاضی می شه فرمول های مختلفی تولید کرد ولی فرمول باید کارایی داشته باشه وگرنه در حال حاضر فرمول هایی هست که تمام اعداد اول رو پوشش می دن. مثلا همینی که می گم:


http://upload.wikimedia.org/wikipedia/en/math/8/5/9/8592a09bcc0afa3d574f8334ffdb2519.png

http://upload.wikimedia.org/wikipedia/en/math/f/1/5/f1543c42176a92a9f894996885907869.png

http://upload.wikimedia.org/wikipedia/en/math/8/2/f/82f70b962c69f621284b35eed5b727cc.png

اما استفاده از این جور فرمول ها (که بیش تر جنبه ی الگوریتمی دارن...) مثل جمع زدن اعداد 1 تا n هست به جای استفاده از 2/(n*(n+1. خوب ما دومی رو می خوایم نه این که اعداد یک تا n رو جمع برنیم، گرچه بشه جمع اعداد یک تا n رو به صورت نمادهای ریاضی با سیگما بیان کرد.

maktoom
شنبه 13 اسفند 1390, 16:21 عصر
بنظر الگوریتم حذف اعداد غیر اول(مرکب) الگوریتم موثری باشه.
البته خیلی مهم نیست که تمام اعداد مرکب رو شناسایی کنیم. بلکه مهم اینه که تعداد رو هرچقدر که میشه محدود کنیم.
اما اینجا بازهم یه مشکلی هست. به فرض که واقعا تعداد زیادی عدد مرکب شناسایی شدن و در محاسبات صرفه نظر بشن.
اونوقت ما یه تعداد عدد مثلا صدهزار رقمی داریم یا مثلا یک میلیون رقمی که شاید فقط بر دو تا عدد اول خیلی بزرگ دیگه بخشپذیر باشن.
اینجاست که محدود بودن منابع کار رو سخت می کنه.
مطلب اونجایی خودشون نشون میده که گفتن نه اینکه فقط یدونه عدد اول دو میلیون رقمی پیدا کنن بلکه می خوان تمام اعداد اول تا یه حدی رو شناسایی کنن.

کسی پیشنهاد بهتری داره؟

maktoom
یک شنبه 14 اسفند 1390, 11:31 صبح
سلام
یه کار میشه کرد.
میشه با پیدا کردن هر عدد اول، حاصلضرب اون عدد اول با اعداد اول ماقبلش رو حساب کرد و اونا رو جزو اعداد مرکب گذاشت کنار.

MP.C-Writer
یک شنبه 14 اسفند 1390, 18:09 عصر
خیلی بیشتر طول میکشه

m2011kh
یک شنبه 14 اسفند 1390, 18:11 عصر
سلام به دوستان.
منم تا جایی که بتونم کمک میکنم ولی فقط نمیدونم هدف از نوشتن این برنامه چیه؟

MP.C-Writer
یک شنبه 14 اسفند 1390, 20:33 عصر
سلام به دوستان.
منم تا جایی که بتونم کمک میکنم ولی فقط نمیدونم هدف از نوشتن این برنامه چیه؟

هدف جمع آوری همه ی اعداد اول از 2 تا یک عدد 3 میلیون رقمیه. یه هدف خیلی کوچیک و ساده

maktoom
یک شنبه 14 اسفند 1390, 22:20 عصر
خیلی بیشتر طول میکشه

من اینطور فکر نمی کنم.
چون اینطور ما بیشتر حافظه خرج می کنیم نه پردازش پردازشگر.
روند کار مثه این میمونه که مدام داریم با رفتن به جلو خونه های بیشتری رو خالی می کنیم و این خالی کردن خونه ها هرقدر رقم عدد بیشتر بشه هزینشون بیشتر و بیشتر تا حدی که سرسام آور بشن پیش میره.
عدد حاصل از ضرب دو عدد اول که یکی n و دیگری m رقم داره ماکزیمم m+nرقم داره. خب فرض کنید یک عدد یک میلیون رقمی اول که حاصل از ضرب همون باشه داریم می خوایم بدونیم عدد اول هست یا نه. چقدر محاسبات لازمه؟
اما خب کافیه از دومین(2 بکنار) عدد اول و بعد از اون سومین عدد اول حاصلضرب اونها رو داشته باشیم. یکبار محاسبه داریم. این در مقایسه با اونچه صرفه جویی کردیم بمراتب پردازش کمتری خواهد برد.

MP.C-Writer
دوشنبه 15 اسفند 1390, 15:29 عصر
من اینطور فکر نمی کنم.
چون اینطور ما بیشتر حافظه خرج می کنیم نه پردازش پردازشگر.
روند کار مثه این میمونه که مدام داریم با رفتن به جلو خونه های بیشتری رو خالی می کنیم و این خالی کردن خونه ها هرقدر رقم عدد بیشتر بشه هزینشون بیشتر و بیشتر تا حدی که سرسام آور بشن پیش میره.
عدد حاصل از ضرب دو عدد اول که یکی n و دیگری m رقم داره ماکزیمم m+nرقم داره. خب فرض کنید یک عدد یک میلیون رقمی اول که حاصل از ضرب همون باشه داریم می خوایم بدونیم عدد اول هست یا نه. چقدر محاسبات لازمه؟
اما خب کافیه از دومین(2 بکنار) عدد اول و بعد از اون سومین عدد اول حاصلضرب اونها رو داشته باشیم. یکبار محاسبه داریم. این در مقایسه با اونچه صرفه جویی کردیم بمراتب پردازش کمتری خواهد برد.

شاید. ولی باید بیشتر روش فکر کنم. یه نکته ای که هست اینه که تعداد اعداد مرکب خیلی بیشتره و تولید کردن اون ها و خارج کردنشون از دور خیلی بیشتر طول می کشه. تازه مثلا با همین دو تا عدد اول 7 و 11 بینهایت عدد میشه ساخت. الگوریتمی دارید که این اعداد مرتب و دسته بندی شده تولید بشند؟ تازه ما همه اعداد اول رو که نداریم تا بتونیم از اون ها اعداد مرکب جدید بسازیم.
اگه راه حلی دارید بی زحمت توضیح بدید

MP.C-Writer
پنج شنبه 18 اسفند 1390, 11:30 صبح
دیگه کسی نمی خواد تو بحث شرکت کنه؟

Veteran
پنج شنبه 18 اسفند 1390, 11:35 صبح
بحث سنگینه. نمیشه با این سیستم های معمولی اعداد 3 میلیون رقمی پردازش کرد که ایا این عدد اول هست یا نه....
خب حالا شما فرض کن اینکارو کردیم بعدش چی میشه ؟
ادامه کار رو توضیح بده شاید بچه ها انگیزه بگیرن

setroyd
پنج شنبه 18 اسفند 1390, 13:08 عصر
برای این کار برید رو زبانهای دیگه وقت بزارید بهتره چون اینجا این بحث به جایی نمیرسه .

IamOverlord
پنج شنبه 18 اسفند 1390, 18:21 عصر
خوب اگه می خواید از روش حذف اعداد استفاده کنید، غربال اراتسن هست دیگه...

مصطفی ساتکی
پنج شنبه 18 اسفند 1390, 21:23 عصر
به مبحث dynamic programming تو طراحی الگوریتم رجوع کنید به راحتی حل میشه

IamOverlord
جمعه 19 اسفند 1390, 18:06 عصر
اصلا این کار چه جذابیتی داره، قبلا هزاران بار شده، بیاید یه کاری که قبلا ده ها بار شده رو انجام بدیم! (:دی) همون کشیدن تصویر اعداد اول...

maktoom
شنبه 20 اسفند 1390, 09:42 صبح
سلام
بنظر برای اعداد بالا، بررسی اول بودن یا نبودنشون به نوعی فقط با همون غربال استراسن امکانپذیره. (بخاطر عمومیت نداشتن فرمولهای کاربردی که تا امروز پیدا شده)
اما نکته ای که اینجا هست نحوه الگوریتمیه که کار این غربال رو کم کنه.
چقدر مناسبه اگه در حین پردازشهایی که در اعداد پایینتر انجام میشه یه سری از خونه های آینده برای اعداد بالاتر که مقسوم های کمی دارند (فقط مقسوم های اول دارند) رو شناسایی کنیم و حین غربال کردن خود به خود به خونه های خالی بخوریم. یعنی پردازشهایی رو کم کنیم برای بررسی مرکب بودن.
اما این کشیدن اعداد اول، میشه منظورتون رو بهتر بگید. من درست متوجه نشدم. منظورتون پیدا کردن عاملها است؟

IamOverlord
شنبه 20 اسفند 1390, 17:45 عصر
منظورم اینه که یه سری تصاویر درست کنیم، و مثلا اگه Pixel ای سیاه بود یعنی اون عدد اوله، اگه Pixel ای سفید بود یعنی اول نیست. حالا این جور کارا رو به هزاران نحو مختلف می شه انجام داد. تصاویر جالبی تولید می شه. مثلا این نمونه ها رو ببینید:

maktoom
شنبه 20 اسفند 1390, 22:30 عصر
من برنامه رو نمی تونم اجرا کنم(بدون اینکه اشکالی از برنامه باشه) اما احتمالا منظورتون شبیه اینا باشه:
اینجا (http://mathworld.wolfram.com/PrimeSpiral.html) و اینجا (http://buckydome.com/math/ulam/triangle.htm) و اینجا (http://en.wikipedia.org/wiki/File:Primes_-_distribution_-_up_to_3_x_17_primorial.png) و اینجا (http://www.maa.org/editorial/mathgames/mathgames_01_25_04.html)
اگه درست گفته باشم، ایده شما چیه؟ برای اعداد بزرگ بهمون الگویی میده؟ محدودیت هاش کجاهاس؟

MP.C-Writer
شنبه 20 اسفند 1390, 22:45 عصر
حالا چه جوری باید تصویر پیکسل های سیاه و سفید تولید کنه؟ تشخیص این چه جوریه؟