PDA

View Full Version : تولید یک حلفه با تعداد تکرار 94^94 !!!!!



reza1371
چهارشنبه 28 فروردین 1392, 20:49 عصر
سلام
دوستان کسی میتونه راهنمایی کنه چطور میشه یه حلقه با تعداد تکرار 94^94 ایجاد بشه؟؟؟

veniz2008
چهارشنبه 28 فروردین 1392, 21:22 عصر
سلام
دوستان کسی میتونه راهنمایی کنه چطور میشه یه حلقه با تعداد تکرار 94^94 ایجاد بشه؟؟؟
سلام.
اینطوری :

int j = 0;
for (int i = 0; i < Math.Pow(94, 94); i++)
{
j++;
}
MessageBox.Show(j.ToString());
فقط مواظب CPU ت باش.
موفق باشی.

group45
چهارشنبه 28 فروردین 1392, 21:25 عصر
اصلا این حلقه به پایان میرسه؟ واسه چه کاری میخواید؟شاید راه بهتری بشه بهتون گفت

veniz2008
چهارشنبه 28 فروردین 1392, 21:35 عصر
اصلا این حلقه به پایان میرسه؟ واسه چه کاری میخواید؟شاید راه بهتری بشه بهتون گفت
قطعا نه.
چون i سرریز میکنه.
متغیرهای int 32 حداکثر تا 2 میلیارد و 100 خورده ای میلیون بیشتر گنجایش ندارن. پس بیچاره وسط راه هلاک میشه.
منم به همین خاطر گفتم که مواظب cpu سیستمش باشه!.

Mahmoud.Afrad
چهارشنبه 28 فروردین 1392, 22:36 عصر
قطعا نه.
چون i سرریز میکنه.
متغیرهای int 32 حداکثر تا 2 میلیارد و 100 خورده ای میلیون بیشتر گنجایش ندارن. پس بیچاره وسط راه هلاک میشه.
منم به همین خاطر گفتم که مواظب cpu سیستمش باشه!.
برای جلوگیری از سرریز کافیه i رو از جنس خروجی math.power یعنی از نوع double بگیرند. در ضمن Math.Pow(94, 94)رو هم قبل از حلقه محاسبه کنید تا نیاز نباشه در هر تکرار محاسبه بشه.

phpeproject.ir
چهارشنبه 28 فروردین 1392, 23:14 عصر
اخه چرااااا این حلقه باید اجرا بشه ؟ ! ! :اشتباه:

FastCode
چهارشنبه 28 فروردین 1392, 23:18 عصر
هدف چیه؟
اگر مساله embarrassingly parallel باشه میشه از CUDA یا OpenCL استفاده کرد.
تکنولوژی های دیگه هم هستن که میتونن از چیزی که دات نت ارائه میکنه بهتر باشن.
LLVM, AVX, SSE


البته توجه داشته باشید که این تعداد یا حتی جذر این تعداد هم با این تکنولوژی ها غیر ممکن هست.
فکر میکنم شما میخواهید AES-256 رو بشکنید.باید بگم نمیتونید.

Hajivandian
چهارشنبه 28 فروردین 1392, 23:51 عصر
سلام.

خب بزارید منم یه حساب کتاب سر انگشتی بکنم!

2.9786415160527156567152269188849e+185 = 94^94

اگر در هر ثانیه 100 تریلیون دور حلقه اجرا بشه! داریم:

2.9786415160527156567152269188849e+171 ثانیه زمان برای اجرای کامل.

که اگر هر سال رو 1000 روز در نظر بگیریم! برابر است با:

3.4475017546906431211981793042649e+163 سال

پس این یعنی همون حلقه بی نهایت:

while(true){ /* دستورات */ }

FastCode
پنج شنبه 29 فروردین 1392, 00:11 صبح
اگر در هر ثانیه 1 میلیون دور حلقه اجرا بشه! داریم:
80186 ؟
اگر اشتباه حساب نکرده باشم سیستم من الان نزدیک ۷۰۰ میلیون تا در ثانیه اجرا میکنه.~=400GigaFlops

http://en.wikipedia.org/wiki/TOP500
این لیست هم ۶ رقم از سیستم من و شما قویتره

phpeproject.ir
پنج شنبه 29 فروردین 1392, 00:13 صبح
80186 ؟
سیستم من الان نزدیک ۷۰۰ میلیون تا در ثانیه اجرا میکنه.
با این وجود امتحانش مجانیه خرجش یه ریست دیگه :لبخند:

veniz2008
پنج شنبه 29 فروردین 1392, 00:16 صبح
اخه چرااااا این حلقه باید اجرا بشه ؟ ! ! :اشتباه:
شما به من بگو چرا نباید اجرا بشه؟
فقط حلقه ها نیستن که نیاز به تکرار دارن.
من روزی چندین بار از خودم سوالی رو که از بچگی به ذهنم رسید و هنوز جوابی براش نگرفتم رو تکرار میکنم.
بدی (یا خوبی) آدم های سمج و سیریش همینه.
سوال رو اونقدر تکرار میکنن تا صورت سوال رو اونطوری که باید فهمیده بشه بفهمن.
چون به نظر من جواب تمام سوالات در فهمیدن صورت سوالات هست.
حلقه بیچاره چه زجری میکشه از اینکه به جواب نمیرسه!.

FastCode
پنج شنبه 29 فروردین 1392, 00:18 صبح
با این وجود امتحانش مجانیه خرجش یه ریست دیگه :لبخند:
اگر لینوکس با این چیزها ریست میخواست که ......
من روزی صد تا از این تست ها میگیرم.

برای نمونه کاری که دوستمون میخواد انجام بده بهتره وضعیت پروژه distributed.net رو ببینید.

tooraj_azizi_1035
پنج شنبه 29 فروردین 1392, 16:16 عصر
سلام
با استفاده از Parallel.For اجازه اجرای موازی رو به کدتون بدید:

using System.Threading.Tasks;
class Test
{
static int N = 1000;

static void TestMethod()
{
// Using a named method.
Parallel.For(0, N, Method2);

// Using an anonymous method.
Parallel.For(0, N, delegate(int i)
{
// Do Work.
});

// Using a lambda expression.
Parallel.For(0, N, i =>
{
// Do Work.
});
}

static void Method2(int i)
{
// Do work.
}
}


و برای 94^94 مثل اینکه باید چند Parallel.For پشت سر هم بنویسی.:متفکر:

group45
پنج شنبه 29 فروردین 1392, 21:32 عصر
یه سوال فنی؟ 94^94 مگه نمیشه عدد 94 رو 94 بار در خودش ضرب کنی!!!!!!!!! :متفکر: :متفکر:
پس این حلقه باید 94 بار بچرخه. :افسرده: و فقط هوای دیتا تایپ جواب آخر رو باید داشت.:خجالت:

veniz2008
پنج شنبه 29 فروردین 1392, 21:40 عصر
یه سوال فنی؟ 94^94 مگه نمیشه عدد 94 رو 94 بار در خودش ضرب کنی!!!!!!!!! :متفکر: :متفکر:
پس این حلقه باید 94 بار بچرخه. :افسرده: و فقط هوای دیتا تایپ جواب آخر رو باید داشت.:خجالت:
نه دیگه. اگر قرار بود 94 بار بچرخه که مثل بچه آدم مینوشتیم:


for(int i = 0; i<94; i++)
{
دستورات مورد نظر
}

صورت سوال داره میگه حلقه به تعداد 94^94 بار تکرار بشه نه به تعداد 94 بار.
مطمئنا حواست نبوده وگرنه خودت اینا رو میدونی!
موفق باشی.

group45
پنج شنبه 29 فروردین 1392, 22:44 عصر
نه دیگه. اگر قرار بود 94 بار بچرخه که مثل بچه آدم مینوشتیم:


for(int i = 0; i<94; i++)
{
دستورات مورد نظر
}

صورت سوال داره میگه حلقه به تعداد 94^94 بار تکرار بشه نه به تعداد 94 بار.
مطمئنا حواست نبوده وگرنه خودت اینا رو میدونی!
موفق باشی.

گفتم یه جای کار می لنگه :اشتباه: واااای بر من

erfan_urchin
پنج شنبه 29 فروردین 1392, 23:59 عصر
دوستان دقت کردین همه باهم دارین اینجا باهم بحث و گفتگو میکنید اما خود آقای reza1371 که این سوالو پرسیده هیچ جوابی نمیده :لبخند:
یه جورایی فکر کنم هممونو سرکار گذاشته :لبخند:

phpeproject.ir
جمعه 30 فروردین 1392, 00:14 صبح
دوستان دقت کردین همه باهم دارین اینجا باهم بحث و گفتگو میکنید اما خود آقای reza1371 که این سوالو پرسیده هیچ جوابی نمیده :لبخند:
یه جورایی فکر کنم هممونو سرکار گذاشته :لبخند:
دقیقا همینجوریه جواب حلقه معلومه حلقه بی پایان

hosseinrasouli
جمعه 30 فروردین 1392, 12:02 عصر
بچه ها تا reza1371 نگه این حلقه برای چیه جواب ندینا .
اصلا کاربرد حلقه برای چه برنامه ایست :متفکر: