poj1811(素数判断与合数分解模板)
来源:互联网 发布:c 编程分解质因数 编辑:程序博客网 时间:2024/04/30 06:44
原文地址:poj 1811(素数判断与合数分解模板) 作者:ac之重生
素数的测试:
费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1.
二次探测定理:如果n是一个素数,且0<x<p,则方程x^2%p=1的解为:x=1或
定理:若n是素数,a是小于n的正整数,则n对以a为基的Miller测试,结果为真.
Miller测试进行k次,将合数当成素数处理的错误概率最多不会超过4^(-k).
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define MAX (pow(2.0,60))
#define C 240
#define TIME12
using namespace std;
__int64 MIN;
__int64 gcd(__int64 a, __int64 b) //计算a和b的最大公约数
}
__int64 mod_mult(__int64 a, __int64 b, __int64 n) //计算(a*b) modn
{
}
__int64 mod_exp(__int64 a, __int64 b, __int64 n) //计算(a^b) modn
{
}
bool Wintess(__int64 a, __int64 n) //以a为基对n进行Miller测试并实现二次探测
{