我正在使用 libgcrypt 函数gcry_prime_check
来测试该数字3
是否为质数。根据我的功能,事实证明 3 不是质数。我究竟做错了什么?
这是我的代码
#include <gcrypt.h>
#include <stdio.h>
int main(void)
{
gcry_mpi_t cript_prime;
gcry_error_t err;
char buffer[8] = {0};
char number[8] = {0};
printf("%s\n", gcry_check_version ( NULL ) );
gcry_control( GCRYCTL_INIT_SECMEM, 16384, 0 );
cript_prime = gcry_mpi_new(16);
strcpy(number,"3");
gcry_mpi_scan(&cript_prime,GCRYMPI_FMT_USG,number,sizeof(number),NULL);
gcry_mpi_print(GCRYMPI_FMT_USG,buffer,sizeof(buffer),NULL,cript_prime);
printf("The number tested is: %s\n",buffer);
err = gcry_prime_check(cript_prime,4);
if(err)
{
printf("%s\n",gcry_strerror(err));
}
gcry_mpi_release(cript_prime);
return 0;
}
这是输出
1.4.4
The number tested is: 3
Number is not prime
此外,一个关于使用 libgcrypt 的好教程的链接将是一个很大的好处。谢谢
编辑:
好吧,我设法使用生成一个质数gcry_prime_generate
并将该值复制到number
. 原来它没有通过主要检查。但是,当您直接将质数生成的 mpi 输出传递给质数检查功能时……它通过了!