求算法,任意长整数相乘

neverland_83 2009-04-08 06:31:56
请使用C语言编写”长整数相乘”程序,实现两个任意长度的长整数(正数)相乘,输出结果。
正常输入输出:
Test.exe 12 34
408

备注:
1:不需要考虑负数的相乘。
2:如果输入格式不合法,直接输出打印语句:Usage: test A B

int main(int argc, char* argv[])
{
if (3 != argc)
{
printf("Usage: test A B \n");
}

/* 这里补充代码 */

return 0;
}
...全文
407 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
neverland_83 2009-04-09
  • 打赏
  • 举报
回复
谢谢,已经google到算法了。多谢大家。
chocolate001 2009-04-08
  • 打赏
  • 举报
回复
思路是:用字符数组(C语言)或者是字符串(c++)保存长整数,可以想想小学列竖式计算乘法的方法,就是那个思路,一位一位的相乘,最后加起来,最后化为长整数相加。
breezes2008 2009-04-08
  • 打赏
  • 举报
回复
乘法可以转化成加法运算,想想大数加法实现
ryfdizuo 2009-04-08
  • 打赏
  • 举报
回复
google一下吧,老问题了。
大数运算..
liliangbao 2009-04-08
  • 打赏
  • 举报
回复
看一下:
http://hi.baidu.com/aegisys/blog/item/19899e51d4d29710377abe02.html
  • 打赏
  • 举报
回复
别自己写大数算法了,累。
用gmp库就可以了。
还有crypt++,openssl,都可以。
Paradin 2009-04-08
  • 打赏
  • 举报
回复

void mul(const int *a, int n1, const int *b, int n2, int *result)
{
for (int i = 0; i < n2; i++)
for (int j = 0; j < n1; j++)
{
result[i + j] = result[i + j] + a[j] * b[i];
result[i + j + 1] = result[i + j + 1] + result[i + j] / 10;
result[i + j] = result[i + j] % 10;
}
}

  • 打赏
  • 举报
回复
....搜索大数运算,有先成的代码

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧