Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用MPIR素数测试器mpz_likely_Prime_p和mpz_probable_Prime_p?_C++_Mpir - Fatal编程技术网

C++ 如何使用MPIR素数测试器mpz_likely_Prime_p和mpz_probable_Prime_p?

C++ 如何使用MPIR素数测试器mpz_likely_Prime_p和mpz_probable_Prime_p?,c++,mpir,C++,Mpir,我正在尝试使用MPIR的prime tester进行快速非顺序测试;然而,我是MPIR新手,对它们的用法感到困惑——特别是函数使用的“gmp\u randstate\u t”参数。以下是到目前为止我得到的信息: #include<iostream> // used for cout #include<mpir.h> int main() { mpz_t PrimeCanidate; mpz_init(PrimeCanidate); mpz_set

我正在尝试使用MPIR的prime tester进行快速非顺序测试;然而,我是MPIR新手,对它们的用法感到困惑——特别是函数使用的“gmp\u randstate\u t”参数。以下是到目前为止我得到的信息:

#include<iostream> // used for cout
#include<mpir.h>

int main() {
    mpz_t PrimeCanidate;
    mpz_init(PrimeCanidate);
    mpz_set_ui(PrimeCanidate, 3); // sets PrimeCanidate to unsigned int "3"

    if (mpz_likely_prime_p(PrimeCanidate) == 1) {
        std::cout << "Number is prime: " << std::endl;
    }
}
#include//用于cout
#包括
int main(){
mpz_t PrimeCanidate;
mpz_init(PrimeCanidate);
mpz_set_ui(PrimeCanidate,3);//将PrimeCanidate设置为无符号int“3”
if(mpz_可能_素数_p(素数)==1){

std::cout经过一系列的修改,我找到了如何正确初始化mpz_like_prime_p的“state”和div“参数。下面是一个计算和打印介于1和100之间的素数的示例:

#include<iostream> // used for cout
#include<mpir.h>

int main() {

    mpz_t PrimeCanidate;
    mpz_init(PrimeCanidate);
    mpz_set_ui(PrimeCanidate, 2);

    mpz_t additor;
    mpz_init(additor);
    mpz_set_ui(additor, 1);

    gmp_randstate_t state;
    gmp_randinit_default(state);

    mpir_ui div = 0;
    
    int maxbase = 100;
    for (int base = 2; base < maxbase; base++) {
        mpz_add(PrimeCanidate, PrimeCanidate, additor); // repeatedly adds one to PrimeCanidate
        std::cout << "Tested Number: " << PrimeCanidate << std::endl;

        if (mpz_likely_prime_p(PrimeCanidate, state, div) == 1) {
            std::cout << PrimeCanidate << " is prime." << std::endl;
        }
    }
}

#include//用于cout
#包括
int main(){
mpz_t PrimeCanidate;
mpz_init(PrimeCanidate);
mpz_set_ui(PrimeCanidate,2);
mpz_t加法器;
mpz_init(加法器);
mpz_集_ui(加法器,1);
gmp_randstate_t state;
gmp\u randinit\u默认值(状态);
mpir_ui div=0;
int maxbase=100;
对于(int base=2;basestd::cout GMP没有此功能,因此您可能希望删除该标记。您是否阅读了文档中有关随机数的章节?@marglisse我试图通过阅读文档了解randstate的用法,并添加了“GMP\u randstate\u t state;对于第二个参数;然而,我仍然不完全理解它,并且仍然坚持获得“div”参数可能不起作用,我对C++也很陌生,但是,这是我第一个被困的地方——因为大多数其他函数都有现有的例子/实现。谢谢注意到它不是GMP中的一个函数——我已经更新了标签和标题。只需通过
0
…您至少应该在
状态下调用
gmp\u randinit\u default
,然后再使用它()。感谢您的提示,就可以了!(已经修改过,以防其他人想使用它)@f9c69e9781fa194211448473495534