Ejemplo n.º 1
0
int32_t isPrime(uint8_t* num){
	int32_t i=0;
	for(;i<sizeof(small_primes);++i)
		if(bigSMod(num,small_primes[i])==0)
			return 0;
	return millerRabin(num);
}
Ejemplo n.º 2
0
bool millerRabin(num n, std::vector<num> witness) {
    for (int i = 0; i < witness.size(); ++i) {
        if (not millerRabin(n, witness[i]))
            return false;
    }
    return true;
}
Ejemplo n.º 3
0
bool millerRabin(num n) {
    std::vector<num> w;
    if (n < 2047)
        return millerRabin(n, 2);
    else if (n < 9080191)
        w = {31, 73};
    else if (n < 4759123141L)
        w = {2, 7, 61};
    else if (n < 1122004669633L)
        w = {2, 13, 23, 1662803};
    else {
        std::cout << "Miller Rabin Test: Number too large for predefined witnesses!" << std::endl;
        return false;
    }

    return millerRabin(n, w);
}
Ejemplo n.º 4
0
int main()
{
	unsigned long long a=1;	
	unsigned long long  p=1<<30;
		p*=2;
	printf("0");
	while(1)
	{
		a=(a+1234567890)%(p);
		printf("%d",millerRabin(a,1000));
		//getchar();
	}
	return 0;
}