求原根_模12的原根

求原根_模12的原根今天学了数论。。。求原根真的好暴力设模数为p我们把p−1p−1p-1分解质因数,对于每一个2≤i≤p−12≤i≤p−12\leqi\leqp-1,判断an−1pi%pan−1pi%pa^{n-1\overp_i}\%p是否为1,如果是,那么这个数就不是原根,否则就是ACCode#include<cstdio>#include<iostre

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

今天学了数论。。。求原根真的好暴力
设模数为p,
我们把 p − 1 p-1 p1分解质因数, p 1 , p 2 … p m p_1,p_2 \ldots p_m p1,p2pm对于每一个 2 ≤ i ≤ p − 1 2 \leq i \leq p-1 2ip1 ,判断 i p − 1 p j % p i^{p-1 \over p_j} \%p ipjp1%p是否为1,如果是,那么这个数就不是原根,否则就是
AC Code

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
int zys[50];
int p;
int o;
int n;
int ksm(int a,int c,int b)
{ 
   
	long long re=1;
	long long t=a;
	while(c)
	{ 
   
		if(c&1)re=re%b*t%b;
		t=t%b*t%b;
		c>>=1;
	}
	return re;
}
int pd(int x)
{ 
   
	for(int i=1;i<=o;i++)
	{ 
   
		if(ksm(x,(p-1)/zys[i],p)%p==1)return 0;
	}
	return 1;
}
int main()
{ 
   
	scanf("%d",&p);
	int pp=p;
	p--;
	for(int i=2;i<=sqrt(p);i++)
	{ 
   
		if(p==1)break;
		if(p%i==0)
		{ 
   
			o++;
			zys[o]=i;
			while(p%i==0)
			{ 
   
				p/=i;
			}
		}
	}
	if(p!=1)
	{ 
   
		o++;
		zys[o]=p;
	}
	p=pp;
	for(int i=2;i<p;i++)
	{ 
   
		if(pd(i))
		{ 
   
			printf("%d",i);
			break;
		}
	}	
	return 0;
} 

Jetbrains全家桶1年46,售后保障稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215435.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux安装与卸载命令_ubuntu安装jdk并配置环境变量

    linux安装与卸载命令_ubuntu安装jdk并配置环境变量linux配置java环境变量(详细)linux配置java环境变量(详细)一.解压安装jdk在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录,执行命令./jdk-6u14-linux-i586.bin这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes,回车。之后会在当前目录下生成一个jdk1.6.0_14目录,你可以将它复制到任…

    2022年10月1日
    5
  • 【9】进大厂必须掌握的面试题-DevOps面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Q1。DevOps和Agile之间的根本区别是什么? 下表中列出了两者之间的差异。 特征 DevOps–…

    2021年6月23日
    119
  • 安装PyTorch详细过程

    安装PyTorch详细过程安装PyTorch过程安装anaconda环境管理PyTorch安装检验安装安装anaconda登录anaconda的官网下载,anaconda是一个集成的工具软件不需要我们再次下载。anaconda官网点击下载跳转到这个页面如果你的Python版本正好是3.8版,那便可以直接根据系统去选择自己相应的下载版本就可以了。但是如果你的Python版本号不是当前页面的版本号,那我建议你去选择相对应的版本号。点击archive你就会跳转到下面的页面你可以访问这篇博客去找到当前与你python版本号相对

    2022年6月23日
    29
  • EasyPusher/EasyDarwin/EasyPlayer实现手机直播版本及效果整理「建议收藏」

    EasyPusher/EasyDarwin/EasyPlayer实现手机直播版本及效果整理「建议收藏」EasyPusher手机直播实现功能最近很多EasyDarwin爱好者提出了手机移动端直播的功能需求,尤其是如何做出像映客这样能够快速出画面播放的效果,经过一段时间的移动端和服务端的优化,EasyPusher直播推送+EasyDarwin流媒体服务器+EasyPlayer客户端播放已经非常好实现了这些需求,EasyPusher编码推送+EasyDarwin公网传输+EasyPlayer播放整个流程,

    2022年6月22日
    42
  • thinkphp5中引入第三方类库

    thinkphp5中引入第三方类库

    2022年2月11日
    56
  • Neutron DVR实现multi-host特性打通东西南北流量提前看(by quqi99)「建议收藏」

    Neutron DVR实现multi-host特性打通东西南北流量提前看(by quqi99)「建议收藏」作者:张华发表于:2014-03-07版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99)LegacyRoutingandDistributedRouterinNeutron先温习下l3-agent原理:l3-agent节点为所有subnet创建内部网关…

    2022年7月14日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号