HDU5391威尔逊定理
威尔逊定理 当且仅当p为素数,p | (p-1)!+1
若p为合数,则p=a*b;如果a!=b,那么p|(p-1)!,
如果a=b,如果p为4,那么p|(p-1)!=2,如果p大于4,那么sqrt§和sqrt(2q)肯定属于(p-1)!中,可以整除
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<climits>
#include<cctype>
#include<queue>
#include<set>
#include<ctime>using namespace std;typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAXN=1e5+5;ll mult(ll a, ll b, ll p) {a %= p;b %= p;ll res = 0, tmp = a;while(b) {if (b & 1) {res += tmp;if (res > p) res -= p;}tmp <<= 1;if (tmp > p) tmp -= p;b >>= 1;}return res;
}ll quick_pow(ll a, ll b, ll p) {ll res = 1;ll tmp = a % p;while(b) {if (b & 1) res = mult(res, tmp, p);tmp = mult(tmp, tmp, p);b >>= 1;}return res;
}bool check(ll a, ll n, ll x, ll t) {ll res = quick_pow(a, x, n);ll last = res;for (ll i = 1; i <= t; i++) {res = mult(res, res, n);if (res == 1 && last != 1 && last != n-1) return true;last = res;}return res != 1;
}bool Miller_Rabin(ll n) {if (n < 2) return false;if (n == 2) return true;if ((n & 1) == 0) return false;ll x = n-1;ll t = 0;while ((x & 1) == 0) {x >>= 1;t++;}srand(time(NULL));const ll tims = 8;for (ll i = 0; i < tims; i++) {ll a = rand() % (n-1) + 1;if (check(a, n, x, t)) return false;}return true;
}int main()
{int T,n;scanf("%d",&T);while(T--){scanf("%d",&n);if(n==4){printf("2\n");}else if(Miller_Rabin(n)){printf("%d\n",n-1);}else{printf("0\n");}}return 0;
}
HDU5391威尔逊定理相关推荐
- 威尔逊定理 ---- [hdu-6608] Fansblog 威尔逊定理 质数的密度分布 快速乘优化快速幂防止中间爆longlong
题目链接 题目大意:就是给你一个质数P∈[2,1e14]P\in[2,1e14]P∈[2,1e14]求一个质数Q<PQ<PQ<P解出Q!modPQ!modPQ!modP 解题思路: ...
- 关于素数常用结论--威尔逊定理、欧拉定理、费马小定理、米勒罗宾算法
再需要判定的数比较大时,用枚举法肯定不行的,但目前数学界也没有任何一种又快又准确的判定素数的方法,并且也证明了素数不存在任何一种通项表达式.但作为初等数论中最大的一部分内容,数学家们对素数性质进行了大 ...
- HDU- 2973 YAPTCHA(威尔逊定理)
题目链接:点击查看 题目大意:求解: 题目分析:我们需要提前知道威尔逊定理:如果p是素数,则 所以我们可以分情况讨论: 当3k+7是素数时,,因为威尔逊定理,,所以一定是一个整数,我们设为x,这样一来 ...
- 数学--数论--四大定理之威尔逊定理
威尔逊定理 当 (p−1)!≡−1(modp)(p−1)!≡−1(modp)(p−1)!≡−1(modp)时,ppp为素数. p∣(p−1)!+1p∣(p−1)!+1p∣(p−1)!+1 即(p−1) ...
- HDU - 2973威尔逊定理
核心问题就是那个等式 我们观察到等式可以写成(n-1)!-1/n-[(n-1)!/n]的形式,这样就应该联想到威尔逊定理了. 回顾一下威尔逊定理的内容:当且仅当n为素数的时候n|(n-1)!-1,n为 ...
- 提高级:初等数论 威尔逊定理
数论四大定理之威尔逊定理 数论四大定理之威尔逊定理 - 简书 威尔逊定理及其证明 - clockwhite - 博客园 数论四大定理之威尔逊定理_L__ear的博客-CSDN博客_威尔逊定理 威尔逊定 ...
- HDU6608 Fansblog【Miller_Rabin素性测试算法+威尔逊定理】
Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- 三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明
一.威尔逊定理 若p为质数,则 p|(p-1)!+1 亦:(p-1)! ≡ p-1 ≡ -1(mod p) 例题: HDU 2973 YAPTCHA (威尔逊定理及其逆定理) 解题报告见http:// ...
- 【学习笔记】原根 + 欧拉定理 + 威尔逊定理
欧拉定理:对于互质的两个正整数 aaa 和 mmm,若 (a,m)=1(a,m) = 1(a,m)=1,那么 aϕ(m)≡1(modm)a^{\phi(m)}\equiv 1\pmod maϕ(m)≡ ...
最新文章
- Redis初学:9(Zset类型)
- python去除字符串中的单词_从字符串中删除单词列表
- php配置email支持_配置以及实现mail()函数
- Java8 Striped64 和 LongAdder
- 解决:flask-sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406数据库字段超出长度错误)
- Vuejs 插值操作
- *** is required and cannot be removed from the server
- JQUERY1.9学习笔记 之内容过滤器(三) has选择器
- Redis实现微博后台业务逻辑系列(八)
- (转)大公司里怎样开发和部署前端代码?
- 机器学习评价指标 ROC与AUC 的理解和python实现
- 武汉纺织大学计算机考试在哪个校区,武汉纺织大学校区有几个 地址是什么
- 国外著名博客 Gizmodo 博主 Brian Lam 访谈录
- TR069服务器配置DHCP/IP/PING/Tracert/HTTP/PPPoE等仿真诊断模板及IPWAN和PPPoE WAN模板创建
- 企业从无到有,云账户CEO大谈创业时代的创业者思维
- Mac 如何开启实现DOH保护隐私?
- Dubbo的原理,面试常见问题
- 系统学习NLP(三十一)--基于CNN句子分类
- document.getElementById与getElementsByName的区别(注意后者多个S)
- ajax添加header
热门文章
- Thonny -- 简洁的 python 轻量级 IDE
- error connection reset by peer 104
- 文献综述写作之“结构内容”
- POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)
- HttpService远程校验
- linux钟java运行命令,在java中运行linux命令
- android高德地图搜索地址,地点/周边搜索-Android平台-开发指南-高德地图车机版 | 高德地图API...
- amoeba mysql读写分离_Mysql 实现读写分离的详细教程(amoeba)
- 大学物理质点动力学思维导图_生理学 | 思维导图
- ssrf漏洞内网渗透_渗透技巧之SSRF