PDA

View Full Version : سوال: پیدا کردن بزرگترین عدد اول از یک عدد 400 رقمی



SaidJan
شنبه 04 خرداد 1392, 02:36 صبح
با پایتون میخوام فاکتوریال 250 رو بگیرم. و از تو اون عدد که حدود 400 رقم داره، بزرگترین عدد اول که داخلش هست رو پیدا کنم.
خودم فاکتوریال 250 رو گرفتم. روش اینکه یه عدد رو چک کنم که آیا اول هست یا نه رو هم نوشتم.
ولی نمیدونم چجوری اون 250! رو بزارم داخل تست تعیین عدد اول تا بزرگترین عدد اول 250! رو پیدا کنه.
این کدی هست که نوشتم، که باید چند خط بهش اضافه بشه.
سپاس



from math import factorial
r = factorial(250)
def prime(r):
if r % 2 ==0:
return
elif r % 3 ==0:
return
elif r % 5 ==0:
return
else:
return r
print (prime(r))

sgb110
شنبه 04 خرداد 1392, 11:46 صبح
منظورت رو نفهمیدم
می خوای بزرگترین عدد اول رو تو بازه 1 تا 250! پیدا کنی؟
در ضمن کد چک کردن عدد اولت اشتباه!
باید برای نمام اعداد اول کوچکتر از نصف 250! این عملیات رو انجام بدی!!!

FastCode
شنبه 04 خرداد 1392, 11:58 صبح
بزرگترین عدد اول کمتر از فاکتوریل ۲۵۰ با بزرگترین عدد اول کمتر از ۲۵۰ برابر هست.
کدوم احمقی این سوال رو طرح کرده؟

SaidJan
شنبه 04 خرداد 1392, 12:06 عصر
بزرگترین عدد اول کمتر از فاکتوریل ۲۵۰ با بزرگترین عدد اول کمتر از ۲۵۰ برابر هست.
کدوم احمقی این سوال رو طرح کرده؟

بزرگترین عدد اول کمتر از 250 ؟ فرض بگیریم بزرگترین عدد اول کمتر از 250 میشه 199. ولی فاکتوریل 250 یه عدد حدود 400 رقمی هست. که از تو این 400 رقم، بزرگترین عدد اول رو باید پیدا کرد.

مثلا فرض بگیریم فاکتوریل 250 میشه 12252468919
تو این عدد بزرگترین عدد اولی که میشه پیدا کرد 919 هست.
اصلا سوالش اینه: A program that prints the longest sequence of digits from 250! that is a prime number.

FastCode
شنبه 04 خرداد 1392, 14:31 عصر
نگاه کن الان بحث عوض شد چون کلمه sequence رو اصلا ترجمه نکرده بودید.بعضی مسائل هست که اگر انگلیسیشون رو بزارید کار خیلی راحتتر میشه.
پیچیدگیش برای انتخاب عدد میشه O(N^2) و برای تست اول بودن O(Sqrt(N) که روی هم میشه 2^2.5.
و چون عددتون از log(512)/log(2) رقم بیشتر هست از pyCUDA هم نمیتونید به این راحتی استفاده کنید.
پیشنهاد من اینه که با wolframalpha.com عدد رو محاسبه کنید.
طولش رو تقسیم بر تعداد هسته ها بکنید.
هر هسته یک رنج از عدد رو جست و جو کنه.
برای جست و جو هم که مشخص هست باید چه کار کنید.

و با توجه به ورژن python از نوع مناسب استفاده کنید: http://stackoverflow.com/questions/538551/handling-very-large-numbers-in-python

مگه c رو ازتون گرفتن که میخواهید با python کار کنید؟با c میشه این برنامه رو در کمتر از دو کیلوبایت اجرا کرد

SaidJan
شنبه 04 خرداد 1392, 20:28 عصر
نگاه کن الان بحث عوض شد چون کلمه sequence رو اصلا ترجمه نکرده بودید.بعضی مسائل هست که اگر انگلیسیشون رو بزارید کار خیلی راحتتر میشه.
پیچیدگیش برای انتخاب عدد میشه O(N^2) و برای تست اول بودن O(Sqrt(N) که روی هم میشه 2^2.5.
و چون عددتون از log(512)/log(2) رقم بیشتر هست از pyCUDA هم نمیتونید به این راحتی استفاده کنید.
پیشنهاد من اینه که با wolframalpha.com عدد رو محاسبه کنید.
طولش رو تقسیم بر تعداد هسته ها بکنید.
هر هسته یک رنج از عدد رو جست و جو کنه.
برای جست و جو هم که مشخص هست باید چه کار کنید.

و با توجه به ورژن python از نوع مناسب استفاده کنید: http://stackoverflow.com/questions/538551/handling-very-large-numbers-in-python

مگه c رو ازتون گرفتن که میخواهید با python کار کنید؟با c میشه این برنامه رو در کمتر از دو کیلوبایت اجرا کرد

ببخشید که sequence رو نگفتم. ولی من تازه دو هفته هست که فهمیدم integer و string و اینها چیه. واقعا واسم سخته که چنین برنامه ای بنویسم. درضمن مجبور هم هستم با پایتون 3 به بالا بنویسم.
و اینکه من نمیدونم هسته چیه یا اون چیزایی که تو خط دوم و سوم نوشتید. واستون امکان داره راهنماییم کنید یا کد رو بنویسید تا چک کنم ببینم چجوریه. من خودم نگاه کنم کد رو میتونم بفهمم این قسمت چکار میکنه.

ممنون میشم.
سپاس

FastCode
شنبه 04 خرداد 1392, 21:02 عصر
تعداد هسته های CPU
اگر در الگوریتم مشکلی دارید میتونم کمکتون کنم ولی معلوم نیست کد پایتونی که بهتون میدم اجرا بشه یا نه چون من زیاد پایتون بلد نیستم ولی بعضی از کتابخونه هاش رو میشناسم و کدشون رو خوندم تا جایی که فهمیدم به کارم نمیاد و بی خیالش شدم.

اگر تازه آشنا شدید ممکنه این تمرین براتون زیاد باشه. یا حداقل قبلش یک مقدار الگوریتم بخونید که مساله رو درک کنید تا به جای دو تا مشکل فقط یک مشکل داشته باشید.اگر روش حل مساله رو بدونید پیاده سازیش در هر زبانی سادست.

اون چیزایی هم که توی خط دوم و سوم نوشتم Omega هستن.جست و جو کنید: Big O Notation

SaidJan
یک شنبه 05 خرداد 1392, 20:14 عصر
کسی دیگه هست بتونه کمکم کنه؟

code_baz
جمعه 10 خرداد 1392, 17:08 عصر
بزرگترین عدد اول کمتر از فاکتوریل ۲۵۰ با بزرگترین عدد اول کمتر از ۲۵۰ برابر هست.
کدوم احمقی این سوال رو طرح کرده؟

فکر نمیکنم حرف شما درست باشه چون مثلا فاکتوریل 10 میشه 3628800 و بزرگترین عدد اول کمتر از این عدد 3628789 میشود
اگه اشتباه میکنم یا درست نفهمیدم بهم بگین

FastCode
جمعه 10 خرداد 1392, 18:58 عصر
فکر نمیکنم حرف شما درست باشه چون مثلا فاکتوریل 10 میشه 3628800 و بزرگترین عدد اول کمتر از این عدد 3628789 میشود
اگه اشتباه میکنم یا درست نفهمیدم بهم بگین
مطمئنی؟
برداشتی که من از این میکنم بزرگترین مضرب اول هست.چون از اول تا آخر پست راجع به عدد صحبت کرده نه کاراکتر

با پایتون میخوام فاکتوریال 250 رو بگیرم. و از تو اون عدد که حدود 400 رقم داره، بزرگترین عدد اول که داخلش هست رو پیدا کنم.