pow.h

来自「实现了任意长度整数的加减乘除以及成n次方运算」· C头文件 代码 · 共 48 行

H
48
字号
#include<stdio.h>
#include"MULTIPLY.h"


long DivByTwo(long num)
{
	long i;
	for( i=0; num > 1; i++ )
	{
		num = num/2;
	}
	return i;
}

struct head *Pow(struct head *headnode, long num) 
{
	struct head *headbuffer = new struct head;
	CreatandStore(headbuffer, 1);
	struct head *headforstore = new struct head;
	headforstore->right = headnode->right;
	headforstore->left = headnode->left;
	int m;
	for(int i=0; num>1; i++)
	{

		m = DivByTwo(num);
		num = num - lpow(2,m);
		for(int j=0; j<m; j++)		
		{
			headnode = Multiply(headnode, headnode);
		}

		headbuffer = Multiply(headnode, headbuffer);
		headnode->right = headforstore->right;
		headnode->left = headforstore->left;
	}
	if(num==1)
	{
		headbuffer = Multiply(headbuffer, headforstore);
	}


	SetNoofDigits(headbuffer);	
	SetNoofNode(headbuffer);

	return headbuffer;
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?