大数运算(8)——大数幂运算

原创 2016年09月03日 21:31:39

大数幂运算的实现有了前面的大数乘法算法做铺垫,就是调用乘法函数,来循环去自乘,幂指数相应减1,直到幂指数变为0时结束。

下面是C语言代码实现:

#include<stdio.h>
#include<string.h>
#define MAX 100
char str[MAX];
int pro[MAX*MAX];//位数分别为a,b的两个数相乘,其最大位数为a*b 
int num[MAX];
void mul(int num[],int pro[],int len)//乘法函数 
{
	int s[MAX*MAX]={0};//每次是s[MAX*MAX]里面的个元素为0 
	int i,j;
	for(i=0;i<len;i++)//将因数各个位上的数字与另一个各个位上的数字相乘 
	{
		for(j=0;j<MAX*MAX;j++)
			s[i+j]=s[i+j]+num[i]*pro[j];//先乘起来,后面统一进行进位			 
	}
	for(i=0;i<MAX*MAX;i++)//进行进位 
	{
		if(s[i]>=10)  //若>=10 
			s[i+1]=s[i+1]+s[i]/10;  //将十位上数字进位 
		pro[i]=s[i]%10;  //将个位上的数字留下
	}		
}
int main()
{
	int n;
	while(~scanf("%s %d",str,&n))
	{
		int i,j,k;
		int len=strlen(str);
		for(j=0,k=0,i=len-1;i>=0;i--)
		{
			num[j++]=str[i]-'0';
			pro[k++]=str[i]-'0';
		}			
		n--;//第一次是两个num[]相乘 
		while(n)//求幂运算 
		{
			mul(num,pro,len);
			n--;
		}
		for(i=MAX*MAX-1;i>0;i--)  //删除0的前缀 
		    if(pro[i])
			    break;
		for(;i>=0;i--)  //倒序输出 
			printf("%d",pro[i]);
		printf("\n");
	}
	return 0;
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

大数运算之快速幂算法

转自作者: 夜せ︱深在网站上一直没有找到有关于快速幂算法的一个详细的描述和解释,这里,我给出快速幂算法的完整解释,用的是C语言,不同语言的读者只好换个位啦,毕竟读C的人较多~所谓的快速幂,实际上是快...
  • ppppublic
  • ppppublic
  • 2017年02月08日 16:26
  • 501

大数a^b%c(快速幂运算)模板

其主要利用的原理就是 a^4 % c=(a^2)^2 % c; 那么这样去快速地算明显是指数级别的计算速度#include using namespace std; int main() { ...
  • qq_31805821
  • qq_31805821
  • 2016年08月22日 21:22
  • 1001

C语言之数学计算幂次方

C语言之数学计算幂次方 1.包含#include "math.h" 2.pow();
  • xlhcgd
  • xlhcgd
  • 2016年01月03日 15:57
  • 796

c语言幂运算

  • 2011年10月22日 18:08
  • 625B
  • 下载

【密码学】C语言实现RSA模幂运算

RSA模幂运算
  • ssjjtt1997
  • ssjjtt1997
  • 2017年10月08日 13:56
  • 234

大数幂模运算

我们知道对于像 7%2,3%5这样的题,计算机很容易算出它们的结果,但是如果我们需要计算 7^123456789%65536这样的值呢,这时普通的计算方式可能就要花费很久的时间了,有没有简单的方法可以...
  • cain4578369
  • cain4578369
  • 2017年05月25日 12:05
  • 388

大整数的N次幂对某个整数求余算法

        由于数目比较大,不能算出来再求余。 所以需要观察性质。   假设要求:    (X.^N) mod m   解  X = m *n +y   y为X mod m 的余数,n = X/m...
  • bmexue
  • bmexue
  • 2006年10月30日 00:10
  • 2790

C语言,用数组实现结果为100000位内的大整数幂运算。

C语言,用数组实现结果为100000位内的大整数幂运算。 在此给出源代码,复制粘贴后即可运行。 可以稍作修改然后封装作为一种运算函数。/*本程序在使用简化运算的情况下可以用于保存2的32位的数; ...
  • yxp189
  • yxp189
  • 2017年12月29日 16:27
  • 17

大数阶乘和一个数的n次幂(c语言)

对于一个数的阶乘,一般情况下(不是竞赛),用
  • u013240038
  • u013240038
  • 2014年10月26日 09:26
  • 1723

快速幂取模详解(C语言版)

在百度文库上下载的快速幂详解,作者给出快速幂算法的完整解释(虽然我也还没看懂,但是确实写的很好,正在仔细研究中)用的是C语言,不同语言的读者只好换个位啦,毕竟读C的人较多~(原网址http://wen...
  • baidu_20363843
  • baidu_20363843
  • 2015年11月01日 16:44
  • 2405
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大数运算(8)——大数幂运算
举报原因:
原因补充:

(最多只允许输入30个字)