NYIST468(Miller_Rabin+定理)
继续整理神奇的公式中。
题意很简单,直接上神奇的公式:
如果FnF_n表示斐波那契数列第i个数,那么
gcd(F_m,F_n)=F_{gcd(n,m)}
那这个题就可以转化为
for:m=1~n
gcd(Fm,Fn)=1gcd(F_m,F_n)=1
即for:m=1~n
Fgcd(m,n)=1F_{gcd(m,n)}=1
即:
for:m=1~n
gcd(n,m)=1或者gcd(n,m)=2gcd(n,m)=1或者gcd(n,m)=2
这里要注意的是除了4,其他的所有偶数都会有比2大的因数
所以除了4这个合数之外,n必须不能是合数,但是,素数2不符合定义,所以特判1,2,4三个元素,然后其他的n是素数就输出Yes,否则输出No。
用M_R判断素数就OK了
code:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#include<string>
#include <set>
//a&3==a%4
using namespace std;
#define ll long long
#define mem(a) memset(a,0,sizeof(a))
const double eps=1e-8;
const int maxn=30010;
const int inf=0x3f3f3f3f;
const int S = 10; long long mult_mod(long long a,long long b,long long c)
{a %= c;b %= c;long long ret = 0;long long tmp = a;while(b){if(b & 1){ret += tmp;if(ret > c)ret -= c;}tmp <<= 1;if(tmp > c)tmp -= c;b >>= 1;}return ret;
}long long pow_mod(long long a,long long n,long long mod)
{long long ret = 1;long long temp = a%mod;while(n){if(n & 1)ret = mult_mod(ret,temp,mod);temp = mult_mod(temp,temp,mod);n >>= 1;}return ret;
}bool check(long long a,long long n,long long x,long long t)
{long long ret = pow_mod(a,x,n);long long last = ret;for(int i = 1;i <= t;i++){ret = mult_mod(ret,ret,n);if(ret == 1 && last != 1 && last != n-1)return true;last = ret;}if(ret != 1)return true;else return false;
}bool Miller_Rabin(long long n)
{if( n < 2)return false;if( n == 2)return true;if( (n&1) == 0)return false;//long long x = n - 1;long long t = 0;while( (x&1)==0 ){x >>= 1;t++;}for(int i = 0;i < S;i++){long long a = rand()%(n-1) + 1;if( check(a,n,x,t) )return false;}return true;
}int main()
{ll a;while(cin>>a){if(a==4){printf("Yes\n");}else if(a==2){printf("No\n");}else if(a==1){printf("No\n");}else{if(Miller_Rabin(a))printf("Yes\n");elseprintf("No\n");}}return 0;
}
NYIST468(Miller_Rabin+定理)相关推荐
- HDU6608 Fansblog【Miller_Rabin素性测试算法+威尔逊定理】
Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- 「hdu6608」Fansblog【Miller_Rabin+威尔逊定理】
Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)
Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...
- BZOJ 4802: 欧拉函数(大数因数分解算法 Pollard_rho 和素数测试算法 Miller_Rabin)
Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Output 4 Soluti ...
- miller_rabin 证明与实现
143. 质数判定__模板题链接 前置知识 费马小定理:ppp是质数,则对于任意的aaa,aaa与ppp互质,则有ap−1≡1(modp)a ^ {p - 1} \equiv 1 \pmod {p}a ...
- 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§和 ...
- Miller_Rabin算法
为了测试一个大整数是不是素数,我们不能够使用传统的测试是否有因子的方法,因为那样的时间复杂度至少也是O(n)O(n)O(n),空间复杂度是O(n)O(n)O(n)(使用线性筛数法),时间复杂度还好说, ...
- 费尔马小定理素数java_利用费马小定理判断素数
今天听了ljss神犇的数论课,顿时感觉----我真的是太弱啦! 我只能稍微写一下我能听懂的部分orz 那么这就是今天我为数不多能听懂一点的之一......QAQ 首先先介绍今天的主角:费马小定理 -- ...
- Pollard_rho大数质因数分解+拉格朗日四平方和定理(bzoj 2904: 平方和)
2904: 平方和 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 160 Solved: 73 [Submit][Status][Discuss] ...
最新文章
- 智能车技术与实践_ROS入门
- 天翼云从业认证(4.11)天翼云物流行业解决方案
- java 二维链表_Java数据结构与算法----数组与链表
- 跨库多维分析后台的实现
- RStudio修改快捷键确保每次运行都是从头运行所有代码
- 前端学习(3126):react-hello-react之总结props
- 但救地球要紧的飞鸽传书
- php接收post写入文件,PHP中Post和Get获取数据写入文件中
- jfinal 任务调度与jsoup 爬虫
- 硬骨难啃:大众想收购自动驾驶公司Aurora,但被拒绝了
- apt-get update出现NO_PUBKEY问题解决
- Boost.Python.ArgumentError: Python argument types in错误解决及Boost安装配置
- 卷积的定义,知乎上有个很有名的段子:
- wwwscan网站目录文件批量扫描工具
- 搬运:PHOTOSHOP存储为 Web 所用格式的选项|处理PNG图像透明度时的仿色选项
- Linux fflush 函数
- 【笔记】Jenkins- 解决 “Error 403 No valid crumb was included in the request“
- RAID(独立磁盘冗余阵列)
- vue使用脚手架的单文件组件环境搭建
- 佳驰电子冲刺科创板:年利润3.2亿 源峰磐钰与国家产投是股东