winter 2018 02 01 关于模运算的一道题

Posted clljs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winter 2018 02 01 关于模运算的一道题相关的知识,希望对你有一定的参考价值。

题目:给出一个正整数n,问是否存在x,满足条件2^x mod n=1,如果存在,求出x的最小值。

分析:1、若给出的n是1,则肯定不存在这样的x;

      2、若给出的是偶数,2的次幂取余一个偶数得到的肯定是给偶数,所以也找不到;

   3、若给出的是奇数,其个位的数字无非是3、5、7、9,而2的次幂的个位为2、4、6、8,分别-1为1、3、5、7,即奇数的倍数都能找到相对的,则2的次幂取余每个奇数都会找       到一个合适的幂数满足题意。

代码:

#include <stdio.h>

int main()
{
    int n ;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==1 || n%2==0)
        {
            printf("2^? mod %d = 1\n",n);
        }
        else
        {
            int j = 1, mi=2;
            while(1)
            {
                mi %= n ; //让min等于min取余n的余数,因为这个数取余n是否得1与商以无关,接下来只看得到的余数即可。
                if(mi == 1)
                {
                    printf("2^%d mod %d = 1\n",j,n) ;
                    break ;
                }
                mi *= 2 ;
                j++ ;
            }
        }
    }
    return 0 ;
}

以上是关于winter 2018 02 01 关于模运算的一道题的主要内容,如果未能解决你的问题,请参考以下文章

关于取模运算的小技巧

关于取模运算的小技巧

关于取模运算的小技巧

关于取模运算的小技巧

大数相乘求和的模运算

Python笔记-取模运算%