威尔逊定理 当且仅当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威尔逊定理相关推荐

  1. 威尔逊定理 ---- [hdu-6608] Fansblog 威尔逊定理 质数的密度分布 快速乘优化快速幂防止中间爆longlong

    题目链接 题目大意:就是给你一个质数P∈[2,1e14]P\in[2,1e14]P∈[2,1e14]求一个质数Q<PQ<PQ<P解出Q!modPQ!modPQ!modP 解题思路: ...

  2. 关于素数常用结论--威尔逊定理、欧拉定理、费马小定理、米勒罗宾算法

    再需要判定的数比较大时,用枚举法肯定不行的,但目前数学界也没有任何一种又快又准确的判定素数的方法,并且也证明了素数不存在任何一种通项表达式.但作为初等数论中最大的一部分内容,数学家们对素数性质进行了大 ...

  3. HDU- 2973 YAPTCHA(威尔逊定理)

    题目链接:点击查看 题目大意:求解: 题目分析:我们需要提前知道威尔逊定理:如果p是素数,则 所以我们可以分情况讨论: 当3k+7是素数时,,因为威尔逊定理,,所以一定是一个整数,我们设为x,这样一来 ...

  4. 数学--数论--四大定理之威尔逊定理

    威尔逊定理 当 (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) ...

  5. HDU - 2973威尔逊定理

    核心问题就是那个等式 我们观察到等式可以写成(n-1)!-1/n-[(n-1)!/n]的形式,这样就应该联想到威尔逊定理了. 回顾一下威尔逊定理的内容:当且仅当n为素数的时候n|(n-1)!-1,n为 ...

  6. 提高级:初等数论 威尔逊定理

    数论四大定理之威尔逊定理 数论四大定理之威尔逊定理 - 简书 威尔逊定理及其证明 - clockwhite - 博客园 数论四大定理之威尔逊定理_L__ear的博客-CSDN博客_威尔逊定理 威尔逊定 ...

  7. HDU6608 Fansblog【Miller_Rabin素性测试算法+威尔逊定理】

    Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  8. 三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明

    一.威尔逊定理 若p为质数,则 p|(p-1)!+1 亦:(p-1)! ≡ p-1 ≡ -1(mod p) 例题: HDU 2973 YAPTCHA (威尔逊定理及其逆定理) 解题报告见http:// ...

  9. 【学习笔记】原根 + 欧拉定理 + 威尔逊定理

    欧拉定理:对于互质的两个正整数 aaa 和 mmm,若 (a,m)=1(a,m) = 1(a,m)=1,那么 aϕ(m)≡1(modm)a^{\phi(m)}\equiv 1\pmod maϕ(m)≡ ...

最新文章

  1. Redis初学:9(Zset类型)
  2. python去除字符串中的单词_从字符串中删除单词列表
  3. php配置email支持_配置以及实现mail()函数
  4. Java8 Striped64 和 LongAdder
  5. 解决:flask-sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406数据库字段超出长度错误)
  6. Vuejs 插值操作
  7. *** is required and cannot be removed from the server
  8. JQUERY1.9学习笔记 之内容过滤器(三) has选择器
  9. Redis实现微博后台业务逻辑系列(八)
  10. (转)大公司里怎样开发和部署前端代码?
  11. 机器学习评价指标 ROC与AUC 的理解和python实现
  12. 武汉纺织大学计算机考试在哪个校区,武汉纺织大学校区有几个 地址是什么
  13. 国外著名博客 Gizmodo 博主 Brian Lam 访谈录
  14. TR069服务器配置DHCP/IP/PING/Tracert/HTTP/PPPoE等仿真诊断模板及IPWAN和PPPoE WAN模板创建
  15. 企业从无到有,云账户CEO大谈创业时代的创业者思维
  16. Mac 如何开启实现DOH保护隐私?
  17. Dubbo的原理,面试常见问题
  18. 系统学习NLP(三十一)--基于CNN句子分类
  19. document.getElementById与getElementsByName的区别(注意后者多个S)
  20. ajax添加header

热门文章

  1. Thonny -- 简洁的 python 轻量级 IDE
  2. error connection reset by peer 104
  3. 文献综述写作之“结构内容”
  4. POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)
  5. HttpService远程校验
  6. linux钟java运行命令,在java中运行linux命令
  7. android高德地图搜索地址,地点/周边搜索-Android平台-开发指南-高德地图车机版 | 高德地图API...
  8. amoeba mysql读写分离_Mysql 实现读写分离的详细教程(amoeba)
  9. 大学物理质点动力学思维导图_生理学 | 思维导图
  10. ssrf漏洞内网渗透_渗透技巧之SSRF