如何解决使用 GMP 库时出现分段错误核心转储
我对以下功能有问题。我正在尝试实现“平方取幂”,这是一种快速计算大正数的通用方法 一个数的整数次幂。
unsigned long EBS(mpz_t &m,mpz_t g,mpz_t k,mpz_t p) {
mpz_t y,carre,a;
mpz_init(y);
mpz_set_ui(carre,2);
if(mpz_cmp_si(k,0) < 0) {
mpz_set_ui(a,1);
mpz_cdiv_q(g,a,g);
mpz_mul_si(k,k,-1);
}
if(mpz_cmp(k,0) == 0) {
mpz_set_ui(m,1);
return mpz_get_ui(m);
}
mpz_set_ui(y,1);
while (mpz_cmp_si(k,1) > 0) {
if(mpz_even_p(k) != 0) {
mpz_powm(g,g,p);
mpz_set_si(k,(mpz_get_si(k) / 2));
}
else {
mpz_mul(y,y);
mpz_mul(g,g);
mpz_set_si(k,((mpz_get_si(k) - 1) / 2));
}
}
mpz_mul(m,y);
return mpz_get_ui(m);
}
int main() {
mpz_t M,c;
mpz_init(M);
mpz_init(c);
.....
const char* mess = random_String();
char c_str[1000];
std::cout << "Le message à chiffrer : " << mess << std::endl;
mpz_set_str(M,mess,10);
EBS(c,M,e,n); //I call the function from here
}
当我调用函数 EBS
时,我得到一个 Erreur de segmentation (core dumped)
,但我不明白为什么。
你能帮我解决这个问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。