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
两遍AC,第一次超时了,后来稍微改了一下代码就通过了。
代码:
#include <stdio.h>
int main() {
int n,a,t;
while(scanf("%d",&n)!=EOF) {
a=2;
t=1;
if (n==1||n%2==0) {
printf("2^? mod %d = 1\n",n);
}
else{
while (a%n!=1) {
a=(a*2)%n; //就是因为这里第一遍超时了,当时写的a=a*2,没有mod n
t++;
}
printf("2^%d mod %d = 1\n",t,n);
}
}
return 0;
}