当前位置: 首页 > news >正文

解二次剩余

解二次剩余

模板

大致证明

若有 \((a,p)=1\) 存在 x 使得 $$ x^2 \equiv n \ (\text{mod}\ p) $$ 则称 a 是 p 的二次剩余。

求 x 我们使用 Cipolla 算法,首先我们需要找到一个 r 使得 \(r^2-n\) 为二次非剩余,保证接下来的 \(w \in \mathbf{F}_{p^2}\) ,r 用随机数得到,再用 Euler 判别法,期望两次找到(二次剩余和二次非剩余分半)。

现在令我们的答案是 \(x \equiv (r+w)^{\frac{p+1}{2}} \ (\text{mod}\ p)\) (由后面 w 的性质构造得到),w 是类似于虚数的数,属于二次扩域 \(\mathbf{F}_{p^2}\) ,而 \(r \in \mathbf{F}_{p}\) ,这里我们希望(令) \(w^2 = r^2-n\) 使得 \((r+w)^2 \equiv n \ (\text{mod}\ p)\)

\[\begin{aligned} \therefore x^2 &\equiv (r+w)^{p+1} \equiv (r+w)^{p}(r+w) \\ &\equiv (r+w(w^2)^{\frac{p-1}{2}})(r+w) \equiv (r-w)(r+w) \\ &\equiv r^2-w^2 \equiv n \ (\text{mod}\ p) \end{aligned} \]

至此 \(x^2 \equiv n \ (\text{mod}\ p)\) 得证。

但还要证明此时的 \(x \in \mathbf{F}_{p}\)。令\(x=u+vw\)

\[\begin{aligned} &\because (x^p)^2 \equiv (x^2)^p \equiv n^p \equiv n \equiv x^2 \ (\text{mod}\ p) \\ &\therefore x^p \equiv \pm x \end{aligned} \]

假设 \(x^p \equiv -x\)

\[\begin{aligned} &\therefore (u+vw)^p \equiv -u-vw \\ &\equiv u^p+v^pw^p \equiv u-vw \\ &\therefore u=0 \ \text{原式不成立} \end{aligned} \]

\(x^p \equiv x\)

\[\begin{aligned} &\therefore (u+vw)^p \equiv u+vw \\ &\equiv u-vw \\ &\therefore v=0 \\ &\therefore x \in \mathbf{F}_{p} \end{aligned} \]

我也是闲的,在这写证明。。
直接上代码。

code

#include <bits/stdc++.h>
using namespace std;
#define int long long
mt19937 rnd(random_device{}());int n,p,ww=0;typedef struct fpp
{int u,v;// x=u+vwfpp()=default;fpp(int a,int b):u(a%p),v(b%p){}fpp operator*(const fpp &x) const{// (u+vw)*(a+bw)=ua+(v+b)ww + (ub+va)wreturn fpp(u*x.u%p+v*x.v%p*ww%p,v*x.u%p+u*x.v%p);}fpp operator^(int x) const{fpp base=*this;fpp ret(1,0);while(x){if(x&1){ret=ret*base;}base=base*base;x>>=1;}return ret;}
}fpp;int qpow(int base,int ci,int p)
{base%=p;int ret=1;while(ci){if(ci&1){ret=ret*base%p;}base=base*base%p;ci>>=1;}return ret;
}int cipolla(int n,int p)
{if(!n) return 0;if(qpow(n,(p-1)/2,p)==p-1) return -1;int r;while(1){// 找到r使得r^2-a为二次剩余--勒让德同余-1r=rnd()%p;if(qpow(((r*r-n)%p+p)%p, (p-1)/2, p)==p-1){break;}}// x=(r+w)^((p+1)/2)// w^2=r^2-nww=((r*r-n)%p+p)%p;auto ans=fpp(r,1)^((p+1)/2);// x=(r+1*w)^((p+1)/2)return ans.u;// x.v=0
}signed main()
{int T;scanf("%lld",&T);while(T--){scanf("%lld%lld",&n,&p);int ans=cipolla(n,p);if(ans==-1){printf("Hola!\n");}else{int ans2=(p-ans)%p;if(ans2<ans){swap(ans2,ans);}else if(ans==ans2){printf("%lld\n",ans);continue;}printf("%lld %lld\n",ans,ans2);}}return 0;
}
http://www.jsqmd.com/news/439517/

相关文章:

  • 2026环氧棒市场洞察:优质品牌+实力厂家全景推荐,采购不踩坑 - 品牌推荐大师
  • 2026年AGV叉车厂家推荐:智能制造趋势排名,涵盖重载与高危场景安全痛点 - 十大品牌推荐
  • 技术原生与垂直深耕:2026年五大GEO服务商实战能力全景解析 - 品牌2026
  • 想要更多询盘?这4个外贸独立站建站平台来询盘更多 - 速递信息
  • 2026年五轴加工中心厂家实力推荐榜:五轴联动/CNC/数控机床/龙门五轴,精密智造与订制化解决方案深度解析 - 品牌企业推荐师(官方)
  • 实验室新手必看:如何根据预算与检测目标选择合适的液相色谱HPLC/UHPLC - 品牌推荐大师1
  • 自动化立体仓库品牌深度评测:全栈自研与行业适配成核心竞争力 - 品牌种草官
  • 新手保姆级教程:OpenClaw 自动化操作浏览器!
  • 2026年 铣床厂家推荐排行榜:立式铣床/炮塔铣床/升降台铣床/数控铣床/台湾铣床等精密加工设备实力品牌深度解析 - 品牌企业推荐师(官方)
  • 2026年湖北靠谱的酒水灌装机,洗衣液灌装机,跟踪式灌装机厂家行业口碑榜单 - 品牌鉴赏师
  • 2026年济南反渗透装置实力公司盘点与选型指南 - 2026年企业推荐榜
  • 2026年3月杭州软件开发软件公司权威推荐,高性能,稳定性强的行业优选 - 品牌鉴赏师
  • 2026年中山有实力的进销存软件代理机构排名,哪家性价比高 - 工业品网
  • 创谱仪器出圈:台式X射线谱仪适配科研工业双场景 - 品牌推荐大师1
  • 2026年生产管理软件服务商排名,江门、佛山哪家口碑好 - 工业品牌热点
  • 说说新疆靠谱的民宿设计公司,新疆匠之初装饰设计值得推荐吗? - 工业设备
  • 2026年AGV叉车厂家推荐:基于多行业实测评价,针对效率与安全痛点精准指南 - 十大品牌推荐
  • 使用C#/.NET8 从零开始搭建微服务项目(二)—————— 上传项目到Gitee
  • AGV叉车厂家哪家强?2026年AGV叉车厂家推荐与排名,针对效率提升与安全隐忧 - 十大品牌推荐
  • 2026年新疆服务不错的民宿设计公司费用分析,怎么收费 - 工业设备
  • 网站打开提示:”未检测到您服务器环境的sqlite3数据库扩展...“
  • gRPC Profile
  • 2026年别墅酒窖定制费用大揭秘,哪家性价比高看这里 - myqiye
  • 想知道2026年优考教育靠不靠谱,看详细评测就清楚 - mypinpai
  • 讲讲郑州派轩装饰全屋定制,选购指南与价格揭秘 - 工业推荐榜
  • 2026年封阳门窗厂家实力推荐:佛山市安格尔门窗有限公司,系统门窗/隔音窗/侧压窗全系适配现代家居 - 品牌推荐官
  • 2026年AGV叉车厂家推荐:技术趋势与合规评测,涵盖锂电与汽车制造场景痛点 - 十大品牌推荐
  • 2026年上海靠谱的私人酒柜定制厂家推荐,专业酒柜定制多少钱? - myqiye
  • 人有的时候,得信命
  • 2026年3月550型模切机厂家最新推荐,中型机型实用耐用 - 品牌鉴赏师