mb.h

来自「此代码实现的功能主要是做素性判断的MillerRobin测试」· C头文件 代码 · 共 44 行

H
44
字号
#include <time.h>
#include <stdlib.h>
#include "stdio.h"
bool Btest(int a,int i)//i-1=2^s*t
{
	 int s=0,j;
	 int x=1;
	 int t=i-1;   //t is an even
	 do{
	 s++;
	 t=t/2;
	 }while(t%2==1);
	 for(j=1;j<=t;j++)
	 {
		x=(x*a)%i;
	 }
	 if((x==1)||(x==(i-1)))
	return true;
	 for(j=1;j<=s-1;j++)
	 {
		 x=(x*x)%i;
		 if(x==(i-1))
			 return true;
	 }
	 return false;

}
bool MB(int i)
{
	int a;
	time_t t;
	srand((unsigned) time(&t)*10000000);
	a=rand()%(i-3)+2;
	return Btest(a,i);
	
}
bool RepeatMB(int i,int j)
{
	int k;
	for(k=1;k<=j;k++)
		if (MB(i)==false)
			return false ;
	return true;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?