如何求m的n次方(结果很大)

如何求出2的1024次方的准确值?可以将大数乘法进行迭代,结果保存在数组中。但是这样速度极慢,这里给出一种方法,但仍旧比Python解释器慢一些,可以继续优化。

如果将大数乘法进行迭代,那么每次运算如果一位出现数值大于9,都需要进位,这是不必要的。

源代码:

#include
#include
#include
#include
bool check(int result[],int n) //检查是否需要进位
{
	for(int i=0;i9999999)
		{
                      return 1;
		}
	}
	return 0;
}
using namespace std;
int main()
{
	int num, exp, len, pointer = 1;
	cout<<"Please input num:";
	cin>>num;
	cout<<"Please input exponent:";
	cin>>exp;
	len = floor(exp * log10(num)) + 1;
	int *result = new int[len];
	result[0] = 1;
	for (int i = 0; i < exp; i++)
	{
		for(int i=0;i 9)
				{
					result[i + 1] += result[i] / 10;
					result[i] %= 10;
				}
			}
			while (result[pointer - 1] > 9)
			{
				result[pointer] = result[pointer - 1] / 10;
				result[pointer - 1] %= 10;
				pointer++;
			}
		}
	}
	cout< 9)
		{
			result[i + 1] += result[i] / 10;	
			result[i] %= 10;
		}
	}
	while (result[pointer - 1] > 9)
	{	
		result[pointer] = result[pointer - 1] / 10;
		result[pointer - 1] %= 10;
		pointer++;
	}
	cout<<"The result is:"< -1; i--)
	{	
		cout<


你可能感兴趣的:(C++)