给定一个n,求最小的x,使(2^x)%n=1,这道题数据不大,直接过即可。
首先,若n为1或任何偶数,则必无解,否则必有解。
有解时,从1起令x递增即可。
#include<stdio.h>
int main()
{
int x = 1, n, t = 2;
while (scanf("%d", &n) != EOF)
{
if (n == 1 || n % 2 == 0)//无解
printf("2^? mod %d = 1\n", n);
else
{
while (t%n != 1)
{
x++;
t = t * 2 % n;
}
printf("2^%d mod %d = 1\n", x, n);
}
x = 1;
t = 2;
}
return 0;
}