题意
给出一个n,求满足2^x mod n=1的最小x(x>0)。
输入
每行一个正整数,n的值。
输出
如果存在最小x,请打印一行,其中2^x mod n=1。
打印2^?否则,mod n=1。
你应该用特定的数字代替x和n。
样本输入
2个
5个
样本输出
2^?mod2=1
2^4mod5=1
思路
当n是偶数是n%20一定不可能余1;
当n是奇数是n%20一定可以余1;
特例n=1时,2^0%1=1;
代码
#include<stdio.h>
int main()
{
int n,t,s;
while(~scanf("%d",&n))
{
if(n==1||n%2==0)
{
printf("2^? mod %d = 1\n",n);
}
else
{
t=2;
s=1;
while(t%n!=1)//暴力
{
t=(t*2)%n;
s++;
}
printf("2^%d mod %d = 1\n",s,n);
}
}
return 0;
}