#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. 查看centos中的用户和用户组

    用户列表文件:/etc/passwd 用户组列表文件:/etc/group 查看系统中有哪些用户:cut -d : -f 1 /etc/passwd查看可以登录系统的用户:cat /etc/passw ...

  2. poj 3017 单调队列优化动态规划

    思路:dp[i]=min{dp[j]+max(num[j+1]...num[i])},其中sum[i]-sum[j]<=m. 那么我们需要用单调队列维护j到i的最大值. #include< ...

  3. hdu 4494 最小费用流

    思路:这题我在下午重现的时候就用的费用流做,可是各种悲催的超时,只是我一开始的那种建图方式多了一个二分查找. 戏剧性的是,求距离的返回值写成int型了,CodeBlock编译器又没有警告,然后就WA啊 ...

  4. 在Eclipse中导入文件和文件夹

    一. 将JAVA文件夹导入Eclipse中的方法: 方法一:直接将java文件夹复制,然后粘贴到项目下: 方法二:(1)打开Eclipse,点击项目的空白处,现在import: (2)现在Existi ...

  5. MongoDB - The mongo Shell, Configure the mongo Shell

    Customize the Prompt You may modify the content of the prompt by setting the variable prompt in the  ...

  6. CSS其他

    1.元素的宽度由内容撑开 display:inline;——不支持高度 display:inline-block;——在IE6下,不支持块标签 float position:absolute——每项设 ...

  7. 基础面试题——HTML/CSS

    1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? (Q1)浏览器:IE,Chrome,FireFox,Safari,Opera. (Q2)内核:Trident,Gecko,Pre ...

  8. 根据不同的浏览器对不同元素进行css调整

    <!if firefox> .element { top:4px; } <![endif]> <!if chrome> .element { top:6px; } ...

  9. 正确理解SQL Server的许可证(转)

    今天在论坛上看到有人讨论如果使用SQL Server作为SEPM的后台数据库,需要多少个CAL的问题:   If I do have to use SQL Server what type of li ...

  10. Android之开源项目优秀项目篇

    本文转自:http://www.trinea.cn/android/android-open-source-projects-excellent-project/ 记录的项目主要依据是项目有意思或项目 ...