[分享]令(2^x)%n==1成立的最小x
/*【题】对于给定的正整数n,找出一个最小的
自然数x,使下式得以成立 (2^x)%n==1
*/
#include<stdio.h>
int main()
{ unsigned int n,x,mod;
printf("n=");
scanf("%d",&n);
if(n<=1||n%2==0)//如果n是1或者偶数,则无解
{
fprintf(stderr,"no solution...\n");
return 1;
}
for(x=1,mod=2; ;x++,mod+=mod)
{
if(mod>n)mod-=n;
if(mod==1)break;
}
printf("x=%d\n",x);
return 0;
}
/*希望某求教于人的网友不要故弄玄虚,
搞什么支付金币才能观看他的帖子之类*/