PDA

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



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


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)
سوالی بود در خدمتیم.
طراحی وب سایت (http://sepandsystem.ir/)
موفق باشید