Chinaunix
标题:
关于大数乘法的解决方案,大家来帮我看一看这样做的好处和坏处
[打印本页]
作者:
lyyiqo
时间:
2013-11-13 00:43
标题:
关于大数乘法的解决方案,大家来帮我看一看这样做的好处和坏处
我的算法比较简单,用一个简单的例子,其实原理差不多:
char a[5];
char b[5]; //存放两个乘数
char result[10]; //存放结果
不说太多,不早了,直接上程序:
/*
* multiplication.c
*
* Created on: 2013年11月13日
* Author: root
*/
#include<stdio.h>
int main()
{
char a[5] = {'1','2','3','4','5'};
char b[5] = {'1','2','3','4','5'};
char res[10];
char p[5][5];
int i,j;
int buf = 0;
int add = 0;
int buf1 = 0;
for(i = 0;i < 5;i++)
{
for(j = 4;j >= 0;j--) //用a与b的每一位相乘,放进数组里
{
p[i][j] = (a[j]-'0') * (b[4-i] - '0');
buf1 = p[i][j];
p[i][j] = buf1%10 + buf;
if(p[i][j] > 9)
{
add = 1;
p[i][j] = p[i][j] -10 +'0';
}
else
{
add = 0;
p[i][j] = p[i][j] +'0';
}
buf = buf1/10 + add;
}
buf = 0;
}
for(i = 0;i < 5;i++)
{
for(j = 0; j < 5;j++)
{
printf("%c ",p[i][j]);
}
printf("\n"
; //打印出五个数组的内容
}
}
整合的过程比较简单就不写了,你们帮我看看这个算乘法怎么样?谢谢啊
晚安,各位
作者:
fly3ds
时间:
2013-11-13 05:02
-bash-4.1$ expr 12345 \* 12345
152399025
-bash-4.1$ ./Multiply
6 1 7 2 5
4 9 3 8 0
3 7 0 3 5
2 4 6 9 0
1 2 3 4 5
你这程序打印了这一堆,计算的结果”152399025“在哪里??
作者:
yulihua49
时间:
2013-11-13 12:06
回复
1#
lyyiqo
速度慢。
你至少要学学openssl里边的BN,大数运算。
作者:
lyyiqo
时间:
2013-11-13 23:53
计算结果要自己加一下的,每下一维左移一位,昨天太晚了就没弄
回复
2#
fly3ds
作者:
lyyiqo
时间:
2013-11-13 23:54
谢谢啊,我会看一下的
回复
3#
yulihua49
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2