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出力をプライムチェック関数に直接渡すと...パスします!!