如何求出2的1024次方的准确值?可以将大数乘法进行迭代,结果保存在数组中。但是这样速度极慢,这里给出一种方法,但仍旧比Python解释器慢一些,可以继续优化。
如果将大数乘法进行迭代,那么每次运算如果一位出现数值大于9,都需要进位,这是不必要的。
源代码:
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
bool check(int result[],int n) //检查是否需要进位
{
for(int i=0;i<n;i++)
{
if(result[i]>9999999)
{
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<pointer;i++)
{
result[i]*=num;
}
if (check(result,pointer)==1)
{
for (int i =