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

大数库GMP测试

时间:2023-05-10 09:22:53浏览次数:43  
标签:GMP 大数 20201331 include 测试 gmp mpz

大数库GMP测试
20201331黄文刚
一、任务详情
0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务

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

二、安装GMP

GMP 主要函数:https://www.shuzhiduo.com/A/WpdK7x2NdV/
sudo apt-get install m4  //默认没安装,gmp用这个
tar -jvxf gmp-6.2.1.tar.bz2    //解压
cd gmp-6.2.1
./configure --enable-cxx    //开启c++支持
make
make check   //注意必须检测一下,gmp官方特别提醒的
sudo make install

因为课前就完成了gmp下载,所以没有再次重新下载到20201331src和20201331学号文件夹里

三、计算你以及前面5位同学和后面5位同学的8位学号的乘积
1.代码

#include<gmp.h>
#define N 20201331
int main()
{
    mpz_t a[11], b;
    mpz_init(b);
    mpz_init_set_str(b, "1", 10);

    const  char s[11][9]={"20201326","20201327","20201328","20201329","20201330","20201331","20201332","20201301","20201302","20201303","20201304"};
    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;
}

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;
}

结果:

标签:GMP,大数,20201331,include,测试,gmp,mpz
From: https://www.cnblogs.com/killerqueen4/p/17386977.html

相关文章

  • 大数库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上的其他产品一致。预期......
  • win11虚拟机安装测试
    1.环境本地环境:VmwareEsxi6.5其他适用环境:Vmware,kvm2.安装遇到报错:此电脑不符合最低安装要求  解决方法:shift+f10唤起cmdcmd界面输入regedit打开注册表编辑器 在HKEY_LOCAL_MACHINE\SYSTEM\Setup右击新建一个项,命名为LabConfig,在该项右击新建三个DWORD(32位)......
  • VOC标签格式转yolo格式并划分训练集和测试集
    VOC标签格式转yolo格式并划分训练集和测试集经常从网上获取一些目标检测的数据集资源标签的格式都是VOC(xml格式)的,而yolov5训练所需要的文件格式是yolo(txt格式)的,就需要对xml格式的标签文件转换为txt文件。同时训练自己的yolov5检测模型的时候,数据集需要划分为训练集和验证集。......
  • 软件测试面试-编程(电子书)
    C++是面向过程也面向对象的语言,具有预处理器、预处理器指令和宏、模板、对象、封装、继承、多态的特性。1、C++程序的内存通常如何分配?解答:全局数据区:通常存储全局变量、静态数据和常量代码区:所有类成员函数和非成员函数代码栈区:执行函数时分配的局部变量、函数参数、返回......