首页 > 其他分享 >lxjc1228

lxjc1228

时间:2023-05-10 11:22:23浏览次数:42  
标签:lxjc1228 BN CTX free num new prod

#include <stdio.h>
#include <openssl/bn.h>

int main()
{
int i, j, flag;
BIGNUM *prod = BN_new();
BIGNUM *num = BN_new();
BN_CTX *ctx = BN_CTX_new();

// 初始化 prod 为 1
BN_one(prod);

for(i=2; i<=1000; i++)
{
flag = 1;
// 判断 i 是否为素数
for(j=2; j*j<=i; j++)
{
if(i % j == 0)
{
flag = 0;
break;
}
}

if(flag)
{
// 将 i 转换为 BIGNUM 类型
BN_set_word(num, i);
// 计算 prod = prod * num
BN_mul(prod, prod, num, ctx);
}
}

// 输出结果
char *str = BN_bn2dec(prod);
printf("1000以内素数的乘积为:%s\n", str);

// 释放内存
BN_free(prod);
BN_free(num);
BN_CTX_free(ctx);
OPENSSL_free(str);

return 0;
}

 

2.

#include <stdio.h>
#include <openssl/bn.h>

int main()
{
int i;
BIGNUM *prod = BN_new();
BIGNUM *num = BN_new();
BN_CTX *ctx = BN_CTX_new();

// 初始化 prod 为 20201228
BN_set_word(prod, 20201228);

// 计算乘积
char digits[9];
for(i=1; i<=14; i++)
{
sprintf(digits, "2020122%d", i+4);
BN_dec2bn(&num, digits);
BN_mul(prod, prod, num, ctx);
}

// 输出结果
char *str = BN_bn2dec(prod);
printf("20201228到20201210的乘积为:%s\n", str);

// 释放内存
BN_free(prod);
BN_free(num);
BN_CTX_free(ctx);
OPENSSL_free(str);

return 0;
}

标签:lxjc1228,BN,CTX,free,num,new,prod
From: https://www.cnblogs.com/shwan-1949/p/17387415.html

相关文章