背景信息:
我正在尝试进行一些复杂的数学级数计算,这些计算最终要么是非常大的数字(超过1000个数字),要么是过于精确的数字(有1000个以上的十进制数字)。为了处理这些数字之间的数学运算,我制作了自己的字符串函数,该函数使用2个数字作为参数,并对它们进行逐位的数学运算。让我为您提供一些有关我所做的函数及其返回类型的信息,因为我认为您必须很好地理解我的代码才能决定在我的情况下是否可以实现线程。
字符串乘积(字符串sx,字符串sy)->返回sx和sy的乘积
字符串smaller_number(字符串sx,字符串sy)->返回两个数字中较小的一个。如果两个数字在数学上相等,则函数返回“ EQUAL”
必要信息:
在我的代码中,我基本上是在尝试找到5的平方根。我通过声明[string root =“ 2.”;]来完成此操作。然后,我的程序进入嵌套循环。 外循环每转一圈在“根”的末尾加1 0,并且其(外循环的)索引对应于十进制数字的索引,每个内循环用于递增“根”的最后一位,直到(root ^ 2)等于5或超过5。 另外,在我的代码中,将平方根的数字称为“ sx”,它是一个字符串。
我不知道如何独自实现线程的原因是,我代码中的几乎所有内容都需要上述内容中的信息。这是我的代码:
for(int k = 1; k <= precision; k++)// outer loop
{
root = root + "0";
if(sx_is_decimal) // Don't mind this scope
{
if(smaller_number(product(root, root), sx) == "EQUAL")
{
return root;
}
}
for(int i = 1; smaller_number(sx, product(root, root)) != sx; i++)// inner loop
{
root.back() = i + '0';
}
root.back() = (int)root.back() - 1; // Un-does the last execution of the inner loop
cout << endl << "Digit " << k << " done";
}
如果您可以在此处提出一些优化建议,我也将不胜感激。我尽力而为,花了几个小时来优化我的“产品”和“ smaller_number”功能。同样,必须使用字符串函数,我不能使用标准整数类型。