#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdbool.h> #define MAX_LENGTH 128
#define ASSIST_LENGTH 19 int main(int argc, char **argv)
{
unsigned long long data[MAX_LENGTH] = {}, tmp = ;
int i = , j = , o_len = MAX_LENGTH - ASSIST_LENGTH;
bool c_flag = true; if (argc < )
{
printf("argument error\n");
return -;
} if (strlen(argv[]) > o_len)
{
printf("out of range\n");
return -;
} if (strlen(argv[]) > )
{
printf("out of range\n");
return -;
} tmp = atoll(argv[]); if (9223372036854775807ULL == tmp && ('' == argv[][] || '' == argv[][]))
{
printf("out of range\n");
return -;
} for (i = strlen(argv[])-; i >= ; i--)
{
data[j] = argv[][i] - ;
j++;
} for (i = o_len - ; i >= ; i--)
{
if (c_flag && == data[i])
{
continue;
} c_flag = false;
printf("%llu", data[i]);
}
printf(" * %llu\n", tmp); for (i = ; i < o_len; i++)
{
if ( == data[i])
{
continue;
} data[i] *= tmp;
} for (i = ; i < o_len; i++)
{
if ( == data[i])
{
continue;
} tmp = data[i]; for (j = ASSIST_LENGTH-; j >= ; j--)
{
data[i+j] += (tmp / (unsigned long long)pow(,j));
tmp %= (unsigned long long)pow(,j);
} data[i] %= ;
} c_flag = true;
for (i = MAX_LENGTH - ; i >= ; i--)
{
if (c_flag && == data[i])
{
continue;
} c_flag = false;
printf("%llu", data[i]);
}
printf("\n"); return ;
}

实现了任意大数与 2^64-1以下的数相乘,

两个任意大数可以将其中一个拆分成多个因子,

两个大数质数暂未考虑

linux c 实现大数相乘的更多相关文章

  1. Linux C/C++ 编程练手 --- 大数相加和大数相乘

    最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...

  2. POJ 2389 Bull Math(水~Java -大数相乘)

    题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...

  3. 大数相乘算法C++版

    #include <iostream> #include <cstring> using namespace std; #define null 0 #define MAXN ...

  4. java版大数相乘

    在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 http://blog.csdn.net/jianzhibeihang/article/details/4948267 用j ...

  5. Karatsuba乘法--实现大数相乘

    Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...

  6. leetcode 43 Multiply Strings 大数相乘

    感觉是大数相乘算法里面最能够描述.模拟演算过程的思路 class Solution { public String multiply(String num1, String num2) { if(nu ...

  7. Java 大数相乘、大数相加、大数相减

    思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...

  8. 华为上机测试题(大数相乘-java)

    PS:这个不是自己写的,测试OK,供参考. /** * 大数相乘 */ public class BigData { public static void main(String[] args) { ...

  9. 求解Catalan数,(大数相乘,大数相除,大数相加)

    Catalan数 卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名.历史上,清代数学家明安图(1692年-1763年)在其<割圜 ...

随机推荐

  1. error和exception的区别,RuntimeException和非RuntimeException的区别

    error和exception的区别,RuntimeException和非RuntimeException的区别   1. 异常机制       异常机制是指当程序出现错误后,程序如何处理.具体来说, ...

  2. 新手留言薄asp.net MVC 学习(适合新手学习)

    以下是发布到IIS后的效果截图: 1)首页展示: 2)登录后台页面展示: 3)后台页面展示: 该项目源代码下载地址:http://files.cnblogs.com/files/f12-liugang ...

  3. CentOS 7 使用外部邮箱 发送邮件和附件—mail,mailx

    1.查看软件包是否安装 [root@localhost ~]# rpm -qa|grep mail mailx-12.5-12.el7_0.x86_64 javamail-1.4.6-8.el7.no ...

  4. javaweb学习总结二十五(response对象的用法一)

    一:Reponse对象的概念 当客户端发送http请求时,服务器端会对每一次请求,创建request对象和response对象. response对象包括三个部分:响应头.响应状态码以及响应体 二:r ...

  5. 开篇,UVA 755 && POJ 1002 487--3279 (Trie + DFS / sort)

    博客第一篇写在11月1号,果然die die die die die alone~ 一道不太难的题,白书里被放到排序这一节,半年前用快排A过一次,但是现在做的时候发现可以用字典树加深搜,于是乐呵呵的开 ...

  6. CSS选择器笔记

    一.元素选择符 序号 选择器 含义 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元 ...

  7. iOS UIView常用方法和属性

    UIView常用方法 addSubView: // 添加子视图 insertSubview: atIndex // 视图插入到指定索引位置 insertSubview:aboveSubview: // ...

  8. view, surfaceView, invalidate, postInvalidate, 刷新屏幕

    http://blog.csdn.net/linghu_java/article/details/9985489 1.view view在api中的结构 Java.lang.Object Androi ...

  9. jquery设置元素readonly和disabled(checkbox只读)

    jquery api中提供了对元素应用disabled和readonly属性的方法:1,readonly 代码示例: $('input').attr("readonly",&quo ...

  10. WebService 的创建,部署和使用

    WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成. 第一次选择WebService,是为了替代数据库远程连接.我们都知道当S ...