fermat素性検出アルゴリズム

14681 ワード

ある電気の情報安全数学の基礎の総合実験
vs 2017でmiraclライブラリを用いて大素数の素性検出アルゴリズムを作成
環境構築の参考https://blog.csdn.net/qq_42450533/article/details/102493504
直接コードを貼りました
#include
#include
#include
#include "miracl.h"

int main()
{
	FILE *fp;//    
	char fpname[100];//fpname         
	int k,num;//k     ,num      
	double possible;//possible            
	miracl *mip = mirsys(500, 10);//   miracl    , 500  10   
	big m = mirvar(0);//m            
	big b = mirvar(0);//b        
	big g = mirvar(0);//g b m      
	big r = mirvar(0);//r b m-1   (mod m)
	big hhh = mirvar(0);//hhh      
	big one = mirvar(1);//one 1
	big two = mirvar(2);//two 2
	printf("          
"
); scanf("%s",fpname); if ((fp = fopen(fpname, "r")) == NULL) { printf("fail to open the file
"
); system("pause"); exit(0); } else { cinnum(m, fp);// fp big m //system("pause"); cotnum(m, stdout);// m printf("

"
); printf("reading success
"
);// printf("
"
); printf("input k:");// k scanf("%d", &k); printf("
"
); // for (num = 1; num <= k; num++) { // b, 2<=b<=m-2 decr(m, 1, hhh);//hhh=m-1 while (1) { bigrand(hhh, b);// b, b if (compare(b,two)>=0)break;// b>=2 } // g egcd(m, b, g);//g=(m,b) if (compare(g, one))// g=a, 0, g>a, 1 { printf("m 1,m
"
); system("pause"); exit(0); } // r, powmod(b, hhh, m, r);//r=b hhh(m-1) (mod m) if (compare(r, one))// r=a, 0, r>a, 1 { printf("m g 1,m
"
); system("pause"); exit(0); } } // k ,m possible = 1 - 1 / (pow(2, k));// printf("m %lf , %d

"
, possible,k); system("pause"); fclose(fp); mirexit(); } return 0; }

本文はブロガーのオリジナルの文章で、CC 4.0 BY-SAの著作権の合意に従って、転載して原文の出典のリンクと本声明を添付してください.