首页 > 其他分享 > 大数库GMP测试-2

大数库GMP测试-2

时间:2023-05-10 10:24:20浏览次数:28  
标签:GMP https 大数 位学 测试 include mpz

任务详情

0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
1. 用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到[GMP官网https://gmplib.org/](https://gmplib.org/)下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。(5')
2. 基于GMP的大数库编写测试代码测试大数运算,计算10000内的素数的乘积(5‘)
3. 基于GMP的大数库计算你以及前面5位同学和后面5位同学的8位学号(数字)的乘积(5‘)
4.  **提交代码(或代码链接)和运行结果截图**

1. 用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到[GMP官网https://gmplib.org/](https://gmplib.org/)下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。


 

 

 

 2. 基于GMP的大数库编写测试代码测试大数运算,计算10000内的素数的乘积

 

#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
 
int is_prime(mpz_t num)
{
    if (mpz_cmp_ui(num, 2) <= 0)
        return 0;
    else if (mpz_cmp_ui(num, 2) == 0)
        return 1;
    else if (mpz_even_p(num))
        return 0;
    else
    {
        mpz_t i,flag,temp;
        mpz_init(i);
        mpz_init(flag);
        mpz_init(temp);
        mpz_set_ui(i, 3);
        mpz_set_ui(temp, 2);
    mpz_cdiv_q (flag, num, temp);
        while (mpz_cmp(i, flag) <= 0)
        {
            if (mpz_divisible_p(num, i))
            {
                mpz_clear(i);
                return 0;
            }
            mpz_add_ui(i, i, 2);
        }
 
        mpz_clear(i);
        return 1;
    }
}
 
int main()
{
    int i;
    mpz_t result, num;
    mpz_init(result);
    mpz_init(num);
 
    mpz_set_ui(result, 1);
 
    for (i = 2; i < 10000; i++)
    {
        mpz_set_ui(num, i);
        if (is_prime(num))
            mpz_mul(result, result, num);
    }
 
    char *result_str = mpz_get_str(NULL, 10, result);
    printf("The result is: %s\n", result_str);
 
    mpz_clear(result);
    mpz_clear(num);
    free(result_str);
 
    return 0;
}

 

运行结果

 

3. 基于GMP的大数库计算你以及前面5位同学和后面5位同学的8位学号(数字)的乘积
#include<gmp.h>
#define N 20201208
int main()
{
    mpz_t a[11], b;
    mpz_init(b);
    mpz_init_set_str(b, "1", 10);

    const  char s[11][9]={"20201203","20201204","20201205","20201206","20201207","20201208","20201209","20201210","20201211","20201212","20201213"};
    int i;
    for(i=0;i<11;i++)
    {
         mpz_init(a[i]);
         mpz_init_set_str(a[i],s[i], 10);
         mpz_mul(b, b, a[i]);
    }

    gmp_printf("%d*%d*%d*%d*%d*%d*%d*%d*%d*%d*%d = \n%Zd\n", N-5, N-4, N-3, N-2, N-1, N, N+1, N+2, N+3, N+4, N+5, b);
    for(i=0;i<11;i++){
        mpz_clear(a[i]);
    }

    mpz_clear(b);
    return 0;
}

 

结果

 

 

验证

 

 

标签:GMP,https,大数,位学,测试,include,mpz
From: https://www.cnblogs.com/syf0105/p/17386905.html

相关文章

  • 大数GMP测试
    一、任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到GMP官网https://gmplib.org/下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。(5')基于GMP的大数库计算你以及前面5位同学和后面5位同学......
  • OpenSSL测试-大数-2
    任务详情0.在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务1.基于OpenSSL的大数库计算1000内的素数的乘积(5‘)2.基于OpenSSL的大数库计算你以及后面15位同学的8位学号(数字)的乘积(5‘)3.用Python或bc命令验证计算的正确性(5’)4.**提交代码(或代码链接)和运行结果截......
  • 大数库GMP测试
    大数库GMP测试20201331黄文刚一、任务详情0.在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到GMP官网https://gmplib.org/下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。(5')基于GMP的大数库编......
  • 大数库GMP测试
    在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务用自己8位学号建两个文件夹xxxxxxxxsrc,xxxxxxxx,到GMP官网https://gmplib.org/下载最新代码到201x1xxxsrc,编译代码并把GMP库安装到201x1xxx文件夹。(5')基于GMP的大数库编写测试代码测试大数运算,计算10000内的素数的乘积......
  • OpenSSL测试-大数
    OpenSSL测试-大数20201331黄文刚0.在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务基于OpenSSL的大数库计算1000内的素数的乘积(5‘)基于OpenSSL的大数库计算你以及后面15位同学的8位学号(数字)的乘积(5‘)用Python或bc命令验证计算的正确性(5’)提交代码(或代码链接)......
  • 入门1-pytest测试框架功能及常用第三方插件介绍
    安装1. 安装Python2. 安装pytest: pipinstall-Upytest3. 安装常用插件pipinstall-rrequirement.txtPS: 常用插件:pytestallure-pytestrequestsPyYAMLpandasopenpyxljsonpathrequests_toolbeltPrettyTablepytest-htmlpytest-xdist https://docs.py......
  • 入门8-Pytest部分测试用例的前后置(fixture)(2-conftest.py结合)
    conftest.py文件专门用来存放fixture的文件,名称固定不能修改。conftest.py中的所有方法在调用时都不需要导包一个用例可以同时调用多个conftest.py中的多个方法一般conftest.py中的方法autouse=True, 自动执行。conftest.py放在最外层,使用scope="session"时,整个项目开头执......
  • 编程打卡:面向对象程序设计测试
    面向对象程序设计测试#include<iostream>#include<iomanip>usingnamespacestd;classPoint{protected:doublex,y;public:Point(doublea=0,doubleb=0):x(a),y(b){cout<<"Pointconstructorcalled\n";......
  • 【数据库测试】【shell脚本】查询同一个SQL执行多次,并统计每次耗时
    场景说明在数据库查询中会常见coldrun与hotrun,hotrun是指将同一个SQL连续运行多遍。运行脚本创建一个run.sh直接复制如下脚本-注意修改数据库的连接IP与密码等-queries2.sql存放查询的SQL,请将queries2.sql文件与run.sh放在同一个目录下,若不在同一个目录,注意改SQL的文件......
  • 带你完成数据库的clickbench性能测试(小白都能看懂)
    clickbench官网链接:https://benchmark.clickhouse.com/如下采用的数据库为分析型数据库支持MySQL协议,其他所有的数据库操作方法均类似测试背景利用clickhouse的clickbench测试数据与查询SQL对AtomData进行了性能测试,所有的测试方法均与其他clickbench上的其他产品一致。预期......