我如何使用MPIR库计算GCD
How can I calculate the GCD using MPIR library
我在使用算术库方面相对缺乏经验。我需要尝试写一些代码来计算最大公分母,使用MPIR
库中的一个函数。我找到了几个方法,但我不理解它们定义变量的方式。例如:关于:
void mpz_gcd (mpz_t rop, mpz_t op1, mpz_t op2)
我不能理解变量的类型和如何使用它们。谁能给我提供一些简单的代码,澄清这一点给我?
但是不能理解变量的类型。
如果您关心的是变量类型,则mpz
类型只是任意精度整数(与实数相反)。
就变量本身而言,rop
是返回变量,它将被设置为op1
和op2
的GCD。
例如,下面是演示该函数用法的完整程序:
#include <stdio.h>
#include <mpir.h>
int main (void) {
mpz_t a, b, c;
mpz_init (a); mpz_init (b); mpz_init (c);
mpz_set_str (a, "1024", 10);
mpz_set_str (b, "768", 10);
mpz_gcd (c, a, b);
printf ("GCD of "); mpz_out_str (stdout, 10, a);
printf (" and "); mpz_out_str (stdout, 10, b);
printf (" is "); mpz_out_str (stdout, 10, c);
putchar ('n');
return 0;
}
输出为:
GCD of 1024 and 768 is 256
我想生成长位的随机值。
但是,如果(正如您在评论中提到的,尽管很难看出GCD计算的适用性)您希望获得100位的随机数,则可以使用以下内容:
#include <stdio.h>
#include <time.h>
#include <mpir.h>
int main (void) {
mpz_t a;
gmp_randstate_t rstate;
mpz_init (a);
gmp_randinit_default (rstate);
gmp_randseed_ui (rstate, time (0));
mpz_urandomb (a, rstate, 100);
printf ("100 random bits gives: "); mpz_out_str (stdout, 10, a);
putchar ('n');
return 0;
}
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 计算缩放多边形的比例,得到给定的多边形面积
- 尝试计算C 中的GCD
- GCD程序如何正确计算结果
- 我如何使用MPIR库计算GCD