首页 > 代码库 > hdu 1395 2^x mod n = 1 (简单数论)
hdu 1395 2^x mod n = 1 (简单数论)
题目大意:
求出一个最小的x
使得 2的x次方对n取模为1
思路分析:
若要
a*b%p=1 要使得b存在
则 gcd (a,p)=1.
那么我们应用到这个题目上来。
当n为偶数 2^x 也是偶数,那么gcd 肯定不是1.故这个是不存在的。
那么n为奇数的时候,也就一定是1了。
所以直接暴力找。
#include <iostream> #include <cstdio> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { if(n==1 || n%2==0) printf("2^? mod %d = 1\n",n); else { int res=1; for(int i=1;;i++) { res*=2; res%=n; if(res==1) { printf("2^%d mod %d = 1\n",i,n); break; } } } } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。