timus 1268 原根

简介:

题意:求K个素数pi对应的ni。ni满足:ni,ni^2,ni^3,...,ni^m对pi取模各不相同(i=1,2,3,...),且m最大,ni最大。

理论基础: 原根的定义:首先,对于互质的两个整数a,m。必然存在:d<=m-1,使得:a^d=1(mod m),比如说:d=phi(m)。我们定义a对m的阶为所有满足a^d=1(mod m)的d中最小的一个正整数。如此一来,如果a对m的阶为phi(m),那么我们称a为m一个原根。

     原根性质定理:如果a为m的原根,记它的阶为ord,那么:a,a^2,a^3,...,a^ord对m取模的值各不相同。

     定理1:对于整数a,与素数m,则a,a^m对m取模的结果相同(费马小定理)。

     定理2:可以证明,如果正整数(a,m)=1和正整数 d 满足a^d=1(mod m),则ord整除d。

定理:如果p为素数,那么素数p一定存在原根,并且p的原根的个数为phi(p-1).

设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.


假设一个数g对于P来说是原根,那么g^i mod P的结果两两不同,且有 1<g<P, 0<i<P,那么g可以称为是P的一个原根,归根到底就是g^(P-1) = 1 (mod P)当且

仅当指数为P-1的时候成立.(这里P是素数).

求原根目前的做法只能是从2开始枚举,然后暴力判断g^(P-1) = 1 (mod P)是否当且当指数为P-1的时候成立。而由于原根一般都不大,所以可以暴力得到.

 

求一个奇素数的所有原根方法。

设g是P的平方非剩余,是P-1的标准分解式,若恒有成立,

则g就是P的原根。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define maxn 70000
bool isprime[maxn];
int prime[maxn],nprime;
void getprime()
{
    long long i,j;
    memset(isprime,1,sizeof(isprime));
    nprime=0;
    for(i=2; i<maxn; i++)
        if(isprime[i])
        {
            prime[nprime++]=i;
            for(j=i*i; j<maxn; j+=i)isprime[j]=0;
        }
}
long long exp_mod(long long a,long long  b,long long c)
{
    a%=c;
    long long ans=1;
    while(b)
    {
        if(b&1)ans=ans*a%c;
        b>>=1,a=a*a%c;
    }
    return ans;
}
bool judge(int yl,int n)
{
    int x=n-1;
    for(int i=0; prime[i]<=x; i++)
        if(x%prime[i]==0)
            if(exp_mod(yl,x/prime[i],n)==1)
                return 0;
    return 1;
}
int main()
{
    int t,n;
    getprime();
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(int i=n-1; i>0; i--)
            if(judge(i,n))
            {
                printf("%d\n",i);
                break;
            }
    }
    return 0;
}



目录
相关文章
|
3月前
|
监控 网络安全 数据安全/隐私保护
Mac服务器ssh连接工具
Mac服务器ssh连接工具
112 2
|
6月前
一种pug与html相互转换的工具
一种pug与html相互转换的工具
89 0
|
6月前
|
虚拟化 Docker 容器
【Docker】Docker容器和虚拟机的区别是什么?
【4月更文挑战第20天】【Docker】Docker容器和虚拟机的区别是什么?
|
弹性计算 运维 安全
一文看完“阿里云自动化运维沙龙 · 上海专场”干货演讲
与20位阿里云技术大牛面对面是一种什么体验?
一文看完“阿里云自动化运维沙龙 · 上海专场”干货演讲
|
14天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
18天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
9天前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
|
15天前
|
人工智能 运维 双11
2024阿里云双十一云资源购买指南(纯客观,无广)
2024年双十一,阿里云推出多项重磅优惠,特别针对新迁入云的企业和初创公司提供丰厚补贴。其中,36元一年的轻量应用服务器、1.95元/小时的16核60GB A10卡以及1元购域名等产品尤为值得关注。这些产品不仅价格亲民,还提供了丰富的功能和服务,非常适合个人开发者、学生及中小企业快速上手和部署应用。
|
22天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
4天前
|
云安全 存储 弹性计算