为大整数序列查找LCM时如何避免溢出错误

文章

我需要找到一系列数字的最小公除数(最多100000个数字,每个数字在[0,2000000000000]范围内)

我正在使用以下算法lcm(a,b)=(a / gcd(a,b))* b

查找2个以上的数字lcm(a,lcm(b,c))...的lcm的标准方法适用于较小的输入值。

但是,对于大输入,即使我使用了很长很长的时间,它也会开始产生溢出错误...

如何避免许多较大的整数值出现溢出错误?

感谢您的帮助

杰夫斯

在这种情况下,最小公倍数可以是具有数百个数字的大量数字。您需要处理这么大的整数。

gmplib-lgmp)支持任意精度的整数运算:

int have_read_first_number = 0;
mpz_t result, arg;
mpz_inits(result, arg, NULL);
mpz_set_ui(arg, 1u);

/* read decimal integers from stdin: one per line */
while((len = getline(&token, &capacity, stdin)) > 0) {
  if (!have_read_first_number) { /* read the first integer */
    parse_mpz(token, result);
    have_read_first_number = 1; /* successfully read first integer */
  }
  else { /* read the rest of the numbers */
    parse_mpz(token, arg);
  }
  /* lcm(a, b, c, d) = lcm(lcm(lcm(a, b), c), d) */
  mpz_lcm(result, result, arg);
}
if (!have_read_first_number) /* error */
  panic("no numbers read");

/* print result as decimal */
mpz_out_str(stdout, 10, result);
puts("");

例子:

$ gcc lcm.c -o lcm -lgmp && { seq 1 100 | ./lcm; }
69720375229712477164533808935312303556800

完整程序: lcm.c

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在BigQuery中对大整数值应用sum()时如何避免整数溢出错误

来自分类Dev

在BigQuery中对大整数值应用sum()时如何避免整数溢出错误

来自分类Dev

在 GSON 中序列化泛型类时出现堆栈溢出错误

来自分类Dev

从mongodb加载大表到Spark时出现堆栈溢出错误

来自分类Dev

循环时出现堆栈溢出错误

来自分类Dev

计数字谜时如何避免溢出?

来自分类Dev

插入时在 INT 列上使用 SUM 时如何防止算术溢出错误?

来自分类Dev

整数溢出时如何计算该模量

来自分类Dev

从 1 到 20 查找 lcm,给出错误“at Main.gcd(Main.java:21)”

来自分类Dev

SqlDateTime溢出错误

来自分类Dev

溢出错误图

来自分类Dev

Excel溢出错误

来自分类Dev

溢出错误:range()

来自分类Dev

Pocketsphinx 溢出错误

来自分类Dev

变量为整数时,出现“值必须小于无穷大的数字”错误

来自分类Dev

存储为“ Int”错误时,整数文字溢出

来自分类Dev

存储为“ Int”错误时,整数文字溢出

来自分类Dev

尝试创建数组时出现堆栈溢出错误

来自分类Dev

使用常量进行算术运算时出现溢出错误

来自分类Dev

在Oracle中截断表时出现数字溢出错误

来自分类Dev

实现递归函数时的堆栈溢出错误(阶乘)

来自分类Dev

使用常量进行算术运算时出现溢出错误

来自分类Dev

实现递归函数时的堆栈溢出错误(阶乘)

来自分类Dev

遍历链表时出现堆栈溢出错误

来自分类Dev

在 Python 中潜水大数时出现溢出错误

来自分类Dev

求解带状联立方程时的溢出错误

来自分类Dev

使用多处理时 scipy 优化的溢出错误

来自分类Dev

如何避免 QTableView 溢出?

来自分类Dev

使用scalaz的免费monad时如何避免堆栈溢出?

Related 相关文章

热门标签

归档