题目大意:
求出一个最小的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; }
hdu 1395 2^x mod n = 1 (简单数论),布布扣,bubuko.com
原文:http://blog.csdn.net/u010709592/article/details/36182343