大数乘法问题

由于高级程序语言数据类型有一定的范围,不能利用原子类型存储过大的数据,所以,大数的乘法问题对算法的初学者有一定的挑战性、练习性。以下是自己对大数乘法问题的解决,因为自己能力不行,没有完成代码的优化工作,仅仅利用此文章记录自己的学习过程。也希望各位大神指导指导。

一、问题:实现大数的乘法。

二、分析问题:

1、因为原子类型的范围限制,自己选用数组对大数进行存储(也可以用STL 的 vector)

2、分析乘法规律,进而实现乘法过程。

大数乘法问题_第1张图片

3、进位工作相对比较简单;用处理位次的数对10取模为本位次的数,对10整除加到高位次中去,循环进行几个。

三、代码实现及其相应的注释

#include 
#include 
/*
		(1 0) 在数组中位次  
		1 2
	x	
		1 2
	----------
	    2 4
	  1 2
	---------
	  1 4 4
	  
	  该方法中的大数乘法,其实就是观察乘法的规律,总结起来,用一套一般性的方法进行实现。 
*/ 

const int M = 100; //允许的大数长度 
using namespace std;
void charTonum(char num1[],char num2[],int n1[],int n2[],int len1,int len2);//char转换成number,即int型 
void multiply(int num1[],int num2[],int result[],int len1,int len2); //完成大数乘法 
void show(int num[],int n);//输出函数 
int main(void){
	char num1[M],num2[M];
	cin>>num1>>num2;
//	cout<"<"<"<= 10){
			result[i + 1] += result[i]/10;
			result[i] %=10;
		}
}
void show(int num[],int n){
	bool flag = true;
	
	for(int i = n - 1;i >= 0; i --){
		if(flag&&num[i] == 0) continue;
		
		if(num[i] != 0)	flag = false;
		
		cout<

欢迎转载,欢迎批评指正!!

你可能感兴趣的:(c/c++,学习,算法基础的学习,大数乘法)