高阶同余方程——原根与指标

本文介绍了原根的概念及其求解方法,并详细解释了指标的概念。此外,还提供了一个使用BSGS算法求解指标的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原根与指标

 

对于互质的数字a,n,满足a^x\equiv 1 \mod n的最小正整数,

x称为a模n的阶

 

原根 

如果r模n的阶刚好是\Theta(n),则我们称r是n的原根

我们计算原根的幂次模n,在一个循环节内,我们就能得到n的简化剩余系

 

原根求法 

P为质数,如果g是P的原根,那么g^{\Theta(P)}\equiv 1 \mod P,

当且仅当指数为\Theta(P)的时候成立

根据欧拉定理推论,g^x\equiv 1 \mod P的最小正整数解为\Theta(P)的约数,

因此我们只要枚举\Theta(P)的约数并做检测即可 

int getG(int n) {
	int i, j, t = 0;
	for (i = 2; (LL)i * i < n - 1; i++)
		if ((n - 1) % i == 0)
			q[t++] = i, q[t++] = (n - 1) / i;
	for (i = 2;; i++) {
		for (j = 0; j < t; j++)
			if (quickpow(i, q[j], n) == 1) break;
		if (j == t) return i;
	}
}

 指标

对于式子g^a\equiv b \mod P

我们称 a 是 b 模 P 的指标,即为l(b)=a

x\equiv y \mod P->l(x)\equiv l(y) \mod \Theta(P)

l(x^y)=y*l(x)

l(x*y)=l(x)+l(y)

 例题

给定整数 a,b,p,其中a,p互质,求一个非负整数 x,使得x^a\equiv b \mod p

 

l(x^a)\equiv l(b) \mod \Theta(p)

a*l(x)\equiv l(b) \mod \Theta(p)

用 BSGS 求出指标,通过 exgcd 求解方程,用快速幂还原原数即可

注意 BSGS 的步长要根据询问数量来设置 BSGS 的步长 = 询问 * 模数/(步长),即step=\sqrt{Q*p}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值