این هم روش من کار باهاش ساده است
ضرب به روش پویاست
دو عدد رو به صورت رشته میگیره و و حاصل ضرب رو به صورت رشته برمیگردونه
کنترل خطا نداره و فقط هم مثبت در مثبت


string Multiply(string num1, string num2)
{
string ans = "";
int n1 = num1.Length, n2 = num2.Length;
int n = n1 + n2;
int i, j, tmp;
int[] data = new int[n];
for (i = 0; i < n1; i++)
for (j = 0; j < n2; j++)
{
data[i + j] += int.Parse(num1[n1 - i - 1].ToString()) * int.Parse(num2[n2 - j - 1].ToString());

}
for (i = 0; i < n - 1; i++)
{
tmp = data[i];
data[i] = tmp % 10;
data[i + 1] += tmp / 10;
}

for (i = n-1; i >= 0; i--)
ans += data[i].ToString();


while (ans[0] == '0')
{
ans = ans.Substring(1, ans.Length - 1);
}

return ans.Trim();
}