PDA

View Full Version : مقاله: برنامه ضرب دو عدد بزرگ با الگوریتم بازگشتی



dousti_design
شنبه 07 مرداد 1391, 00:36 صبح
با سلام
کد پروژه ضرب دو عدد بزرگ با الگوریتم بازگشتی به زبان سی شارپ
الگوریتم:


large_integer prod2 (large_integer u, large_integer v)
{
large_integer x, y, w, z, r, p, q;
int n, m;
n = maximum (number of digits in u, number of digits in v);
if (u == 0 || v == 0)
return 0;
else if (n <= threshold)
return u × v obtained in the usual way;
else {
m = [n/2];
x = u divide 10m; y = u mod 10m;
w = v divide 10m; z = v mod 10m;
r = prod2(x + y, w + z);
p = prod2(x, w);
q = prod2(y, z);
return p × 102m + (r-p-q) × 10m+q;
}
}

نحوه استفاده از کلاس:


Mult m = new Mult();
m.setTreshold(60);
List<int> u = new List<int>();
List<int> v = new List<int>();
for (int i = 1,j=9; i < 10; i++,j--)
{
u.Add(i);
v.Add(j);
}
/////// u = {123456789}
/////// v = {987654321}
u.Add(1); /// its for sign.
v.Add(1); /// its for sign.
/////// u = {1234567891}
/////// v = {9876543211}
List<int> result = new List<int>();
result = m.mult(u, v);
/// Result is: 121932631112635269[1]. 121932631112635269
/// is the true result and the last element [1] is the sign

پروژه در کدپروجکت (http://www.codeproject.com/Articles/429708/Big-numbers-multiplication-in-Csharp)
سوالی بود در خدمتیم.
موفق باشید

صبا فدایی
پنج شنبه 26 دی 1392, 18:02 عصر
میشه یه برنامه از همین به زبان cبذارید؟

mehrdad85
سه شنبه 01 بهمن 1392, 19:25 عصر
سلام
میشه این برنامه را به زبان PHP بذارید؟

ممنون

mehrdad85
سه شنبه 01 بهمن 1392, 19:31 عصر
میشه یه برنامه از همین به زبان cبذارید؟

سلام
دوست عزیز همینطور که داشتم دنبال جواب سوال خودم میگشتم به این لینک (http://forum.ustmb.ir/thread2254.html)برخوردم . یه نگاه بندازه امیدوارم که به دردت بخوره

موفق باشید

dousti_design
سه شنبه 01 بهمن 1392, 21:51 عصر
دوستان متاسفانه فقط همین رو نوشتم و به زبان دیگری ندارمش.

mehrdad85
سه شنبه 01 بهمن 1392, 22:26 عصر
دوستان متاسفانه فقط همین رو نوشتم و به زبان دیگری ندارمش.

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

مرسی

dousti_design
سه شنبه 01 بهمن 1392, 22:53 عصر
سلام
ممنون بابت توجهت دوست عزیز
من خیلی گشتم اما متاسفانه هیچ روزنه امیدی پیدا نکردم
شما نمیدونید که کجا میتونم گیرش بیارم؟
میتونین کمکم کنین؟
اخه خیلی واس حیاتیه متاسفانه هیچ چیز هم در مورد php نمیدونم
آیا منبعی وب سایتی یا فرومی که بتونم جستجو کنم نمیدونید؟

مرسی

معمولا اینجور برنامه های الگوریتمی که نیاز به پردازش و حافظه زیادی دارند به زبان های تحت وب نوشته نمیشن. فکر نکنم چیزی بشه پیدا کرد

mehrdad85
سه شنبه 01 بهمن 1392, 23:04 عصر
معمولا اینجور برنامه های الگوریتمی که نیاز به پردازش و حافظه زیادی دارند به زبان های تحت وب نوشته نمیشن. فکر نکنم چیزی بشه پیدا کرد

درسته اما این برنامه یه برنامه واقعی نیست بیشتر جنبه تمرین داره و یه جورایی تحمیلی داره اگه مسئله دنیای واقعی بود بالاخره با یه زبانی مینوشتم که بهترین زبان با بیشترین کارایی را انتخاب میکردم .
برای تبدیل کد #C به PHP هیچ کانورتوری نیست؟ آخه واسه زبان های دیگه یه چیزایی پیدا کردم اما واسه این نه .

به هر حال بابت همفکریت و راهنماییت باز هم ممنونم

dousti_design
سه شنبه 01 بهمن 1392, 23:09 عصر
درسته اما این برنامه یه برنامه واقعی نیست بیشتر جنبه تمرین داره و یه جورایی تحمیلی داره اگه مسئله دنیای واقعی بود بالاخره با یه زبانی مینوشتم که بهترین زبان با بیشترین کارایی را انتخاب میکردم .
وقتی شما دو عدد 500 رقمی رو به یک هاست اشتراکی!! یا سرور مجازی! یا حتی سرور اختصاصی معمولی میدید که ضربشون کنه. اونم تازه بریزه تو ارایه و با یه الگوریتم بازگشتی اینکار رو انجام بده. دیگه نمیدونه که شما دارید تمرین میکنید یا واقعا قصد انجام اینکار رو دارید.
به هر حال برنامه های تحت وب محدودیت های خاص خودشون رو دارند.