Problem Description
Give a number n, find the minimum x(x>0) that satisfies 2^x mod n = 1.
Input
One positive integer on each line, the value of n.
Output
If the minimum x exists, print a line with 2^x mod n = 1.
Print 2^? mod n = 1 otherwise.
You should replace x and n with specific numbers.
Print 2^? mod n = 1 otherwise.
You should replace x and n with specific numbers.
Sample Input
2 5
Sample Output
2^? mod 2 = 1 2^4 mod 5 = 1---------------------------------#include<stdio.h> #include<math.h> int main() { int hh(int x,int y); int n,k,res; while(scanf("%d",&n)!=EOF) { if((n&1)==0||n<=1) printf("2^? mod %d = 1\n",n); else { res = 1; k=1; while(1) { res *= 2; if(res%n==1) break; res %= n;//这里,当res % n!=1时,继续循环时res要乘2,在对n取余,所以用到剩余定理,在这里就取余; k++;//k代表 x } printf("2^%d mod %d = 1\n",k,n); } } return 0; }ps :1. 数学方法,加暴力求解:2. 注意n的范围判定,3. 剩余定理的应用;