首页 > 其他分享 >模数为素数幂的同余方程解法

模数为素数幂的同余方程解法

时间:2023-11-14 13:22:37浏览次数:32  
标签:方程 模数 素数 求出 pk 同余 解法 mod

本节考虑形如:

f(x)=anxn+an-1xn-1+...+a1x1+a0≡0 mod pk

的方程,其中a>=2,p为素数,p不整除a。

方程解法步骤:

1.求出 f(x)≡0 mod p 的解 x≡c mod p

2.设 f(x)≡ 0 mod p的解为x≡=c+yp2-1

求出y,带入解得x的值

3.设 f(x)≡ 0 mod pk 的解为 x≡c+yk-1

求出y,带入解得x的值

y的求法:

f'(c)y ≡ -f(c)/pk-1 mod p

下面分三种情况:

1.p∤f'(c),y有唯一解:

y ≡ -f(c)/pk-1(f'(c))-1 mod p

注:k为当前所求方程模的幂次

       原式可化为f'(c)y ≡ -f(c)/pk-1 mod p 进行求解

2.p|'(c),但p ∤ f(c)/pk-1 因此方程无解

注:k为当前所求方程模的幂次

3.p|f'(c),且p | f(c)/pk-1

   此时y为pk中的所有正整数(pk除外)

注:为了计算方便,这里一般将y取±p/2和0

下面为例题:

 

 

标签:方程,模数,素数,求出,pk,同余,解法,mod
From: https://www.cnblogs.com/longyan12/p/17831388.html

相关文章

  • 素数相关
    筛法埃氏筛\(O(n\log\logn)\)inlinevoidprimes(intn){memset(v,0,sizeofv);for(inti=2;i<=n;i++){if(v[i])continue;p.push_back(i);for(intj=i;j<=n/i;j++)v[j*i]=1;}}线性筛\(O(n)\)inlinevoidxxs(i......
  • 同余相关
    取余定义:\(a\%b=a-b\left\lfloor\dfrac{a}{b}\right\rfloor\)整除\(a|b\)表示\(a\)能被\(b\)整除,即\(b=a\timesk(k\inZ)\)。同余\(a\equivb\pmodm\)表示\(a\modm=b\modm\)。相当于\(a-b=m\timesk(k\inN)\)。裴属定理内容若\(a\),\(......
  • 1.两个数的最大公约数;2.输出某个范围的素数
    给定两个数,求其最大公约数#include<stdio.h>intmain(){ intm=24,n=18,r=0; while(m%n)//辗转相除法,改成"while(r=m%n)",下面的"r=m%n"可以省略 { r=m%n; m=n; n=r; } printf("%d\n",n); return0; }输出100-200内的素数#include<stdio.h>......
  • 同余最短路学习笔记
    今天讲课讲到了同余最短路。简单记一下,防止之后忘了这个坑。同余最短路inoiwiki简介同余最短路,可以用来处理问题:1.「给定n个数,求这些数能拼出多少其他数(选数数量不限)」2.「给n个数,求这些数不能拼出的最大or最小值」3.「至少拼几次才能拼出模k余x的数」。同余最......
  • R语言群组变量选择、组惩罚group lasso套索模型预测分析新生儿出生体重风险因素数据和
    原文链接:http://tecdat.cn/?p=25158原文出处:拓端数据部落公众号 本文拟合具有分组惩罚的线性回归、GLM和Cox回归模型的正则化路径。这包括组选择方法,如组lasso套索、组MCP和组SCAD,以及双级选择方法,如组指数lasso、组MCP。还提供了进行交叉验证以及拟合后可视化、总结和预测的实......
  • 同余方程(扩展欧几里得)(C/C++)
    ax%b=1,则a和b的最大公约数一定是1。#include<cstdio>#include<iostream>usingnamespacestd;inta,q;intx,y;voidexgcd(inta,intb){ if(b==0) { x=1; y=0; return;//得到gcd(b,0)时到达边界值 }// else { exgcd(b,a%b); intk=x; x=y; y=k-......
  • 100至200内的素数
    intmain(){ inta=0; intcount=0; for(a=100;a<=200;a++) { intb=0; for(b=2;b<a;b++) { if(a%b==0) { break; } } if(b==a) { count++; printf("%d",a); } } printf("总数=......
  • 学习笔记:同余
    同余定义设整数\(m\ne0\)。若\(m\mid(a-b)\),称\(m\)为模数(模),\(a\)同余于\(b\)模\(m\),\(b\)是\(a\)对模\(m\)的剩余。记作\(a\equivb\pmodm\)。否则,\(a\)不同余于\(b\)模\(m\),\(b\)不是\(a\)对模\(m\)的剩余。记作\(a\not\equivb\pmodm\)。这......
  • 【学习笔记】数论——同余相关
    0前言闲的没事的时候可能会摸鱼写一写,都是些非常基础的东西。最高大概会写到exCRT和exBSGS吧,阶和原根往后的我也不会了,但是前面的内容会时不时来补充。为了方便偷懒,许多定理不会给出证明。1基本概念\(\gcd(a,b)\)或者\((a,b)\):\(a,b\)的最大公约数。\(\rm{lcm}......
  • 【C语言】输入一个正整数,判断其是否为素数
    1、素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”。2、素数也可以被等价表述成:“在正整数范围内,大于1并且只有1和自身两个约数的数”。#include<stdio.h>intmain(){ inti,m; printf("输入一个正整数:"); scanf("%d",&m); for(i=2;i<=m/......