ZCMU-1136

image

思路

  1. 一个数学问题
  2. 要知道1为奇数,2^x次方一定为偶数。
  3. 偶数=奇数+奇数,而奇数=奇数*奇数,所以x一定要是奇数才可以。

注意
  • 没告诉范围所以要往大的方向考虑
  • 其中1能够被任一整数整除,所以前面加上对1的判断

参考(费马小定理)

#include<stdio.h>
int main(){
    int i,n,temp;
    
    while(~scanf("%d",&n)){
        temp=1;
        if(n%2&&n>1){
        //必须是大于1的奇数才有,有就一定会跳出循环 
            for(i=1;;++i){
                temp=temp*2%n;
        //在过程中求余数,防止溢出了 
                if(temp==1){
                    printf("2^%d mod %d = 1\n",i,n);
                    break;
                }
            }
        }
        else printf("2^? mod %d = 1\n",n);
    }
    
    return 0;
}
posted @   海&贼  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示