zoukankan      html  css  js  c++  java
  • 密码工程-小素数

    1.使用OpenSSL的命令产生不少于5个素数,提交运行结果截图(5‘)

     参考《密码工程》p107伪代码基于Eratosthenes算法实现 SmallPrimeList,写出测试代码与OpenSSL产生的素数对比,提交代码和运行结果截图(10
    ’)

    #include <stdio.h>

    #define MAXNUM 500000 //求1000以内的所有素数
    int weishu(int m)
    {
    int bits=0;
    int i;
    for(i=0;;i++)
    {
    if(m!=0)
    {
    m=m/2;
    bits++;
    }
    else
    break;
    }
    return bits;
    }
    int main()
    {
    int i, j, c = 0;
    int prime[MAXNUM+1];//定义一个数组用来保存素数
    for (i = 2; i <= MAXNUM; i++)//初始化数组
    {
    prime[i] = 1;//标志为1的是素数
    }
    for (i = 2; i*i <= MAXNUM; i++)//循环处理前i个
    {
    if (prime[i] == 1)//若为素数,则进行筛选
    {
    for (j = 2 * i; j <= MAXNUM; j++)
    {
    if (prime[j]==0)//去掉合数
    {
    continue;
    }

    if (j%i == 0)//若不是素数,则是合数,将素数的标志更改为0
    {
    prime[j] = 0;
    }
    }
    }
    }
    printf("请输入你想要的bit数:");
    int m;
    scanf("%d",&m);

    for (i = 2; i < MAXNUM; i++)//输出素数的值和个数
    {

    if (prime[i] == 1 && m==weishu(i))
    {
    printf("%10d",i);
    c++;
    if (c % 10 == 0)
    printf(" ");
    }
    }
    printf(" 共有%d个素数",c);
    return 0;
    }

     5位:

     10位

     16位的:

     8位:

     openssl进行验证:

    10位的:

     

     16位:

     8位:

  • 相关阅读:
    Go
    Go
    Go -11 Go 框架beego的简单 create run
    文本处理工具之:grep sed awk
    Linux系统布置java项目
    docker 启动mysql 本地连接
    time
    多行查询数据合并成一行进行展示
    settings的使用
    xlsxwriter
  • 原文地址:https://www.cnblogs.com/cindy123456/p/14843650.html
Copyright © 2011-2022 走看看