题意,输入n,问是否存在x使得2^x%n==1,如果存在则输出,......如果不存在则输出.........
思路:2的0次方是不允许的,所以要从2的1次方开始,然后我们可以先写个程序测试一下,在测试的时候我们会发现当n==1||n为偶数时,x是不存在的,其次要注意,不能一次性的把2^x直接算出来,否则你懂的。
#include<iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n==1||n%2==0)
{
cout<<"2^"<<"?"<<" mod "<<n<<" = 1"<<endl;
continue;
}
int i,re=1;
for(i=1;;i++)
{
re=re*2%n;
if(re==1)
{
cout<<"2^"<<i<<" mod "<<n<<" = 1"<<endl;
break;
}
}
}
return 0;
}