PDA

View Full Version : درخواست برنامه 2 به توان هر عددي



ehsanarn
شنبه 23 آذر 1387, 09:14 صبح
سلام
كسي از دوستان برنامه 2 به توان هر عددي داره؟؟؟

shask00l
شنبه 23 آذر 1387, 11:20 صبح
خوب دوست عزیز .... عدد 2 رو توی یک متغییر قرار بده بعد بزارش توی 1 حلقه که به تعداد توان تکرار بشه و توی حلقه متغییری که عدد 2 توش قرار گرفته رو در 2 ضرب کن و توی خودش قرار بده . از این ساده تر نمیشه .!

fazel-d
شنبه 23 آذر 1387, 12:04 عصر
این تابع از کلاس Math

Math.Pow(2, N);جای N می توانی هر عددی را قرار بدی

hamed aj
شنبه 23 آذر 1387, 13:55 عصر
با سلام

احتمالاً منظور دوستمون محاسبه توان 2 برای اعداد بسیار بزرگ هست. مثلا 2 بتوان 10000 که از محدود double خارج هست و با تابع (Math.Pow(2, N انجام پذیر نیست.
درست میگم؟

sara_B
شنبه 23 آذر 1387, 16:53 عصر
با سلام

احتمالاً منظور دوستمون محاسبه توان 2 برای اعداد بسیار بزرگ هست. مثلا 2 بتوان 10000 که از محدود double خارج هست و با تابع (Math.Pow(2, N انجام پذیر نیست.
درست میگم؟

منم همين نظرو دارم
چون ايشون گفتن هر عددي .
حالا پيشنهاد دوستان چيه؟

saeed-kh
شنبه 23 آذر 1387, 20:05 عصر
پس باید از string و رشته هااستفاده کنن

hamed aj
یک شنبه 24 آذر 1387, 01:03 صبح
پس باید از string و رشته هااستفاده کنن

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

sara_B
یک شنبه 24 آذر 1387, 14:56 عصر
اينكه بايد از رشته ها استفاده كنيم كه قطعيه .
اما لطفا با يه مثال و كد :لبخندساده:

h.jaza
یک شنبه 24 آذر 1387, 17:26 عصر
یه روش جالب مطرح می کنم که البته غیر از روش کار با رشته هاس که قبلا (در تاپیک های پیشین) مطرح شده و اون برای ضرب کلا هر دو عددی که از توانایی سخت افزار ما بزرگتر هستن، هستش.

البته اینجا فقط الگوریتمش رو می نویسم و به صورت کلی؛ تبدیل به کد و جزئیاتش با خودتون:



Algorithm HugeMult(U, V)
{
n = MaximumCharacter(U, V)
if (n < L)
{
return (U * V)
}
else
{
s = n / 2
A = U / s
B = U % s
C = V / s
D = V% s

SUM = HugeMult(A, C) * (10 ^ 2s) +
(( HugeMult(A, D) + HugeMult(B, C)) * 10 ^ s) + HugeMult(B, D)
}
return SUM
}


روش کارش خیلی سادس و عموم کتاب های طراحی الگوریتم دارنش. یه روش Divide & Conqure هست برای ضرب اعداد بزرگ و به تبع به توان رسوندشون. اگر مبهم هستش، بگین تا توضیحاتی رو راجع بهش بدم.

hamed aj
دوشنبه 25 آذر 1387, 23:22 عصر
سلام به دوستان

برنامه محاسبه توان با پایه 2 برای اعداد بزرگ

این برنامه مبتنی بر string می باشد

ehsanarn
سه شنبه 26 آذر 1387, 07:45 صبح
سلام
hamed aj
من برنامه را براي اعداد بزرگ(1000000و....)مي خوام
اين برنامه تا 100 جواب داد.

hamed aj
سه شنبه 26 آذر 1387, 16:49 عصر
سلام به شما

دوست عزیر برنامه هیچ محدودیتی در تعداد ارقام ورودی ندارد. فقط با افزایش توان ورودی، زمان محاسبات افزایش پیدا می کند.

من یک تست برای دو به توان ده هزار انجام دادم که حدود 26 ثانیه در سیستم من زمان برد و همانطور که در شکل می بینید، حاصل یک عدد سه هزار و یازده (3011) رقمی شد.


http://www.6photo.org/images/5_Untitled-1.jpg


برای مقادیر بزرگتر به مراتب به زمان بیشتری نیاز هست.

موفق باشید