Теория чисел Введение Глава 8 конгруэнции
Мы обсудим, как решить конгруэнтность $ ах \ эквив с (тойт) $
Очевидно , что это определяется , является ли или нет разрешима конгруэнтностью определения линейного уравнения , эквивалентной \ (Ax-моего = с \ ) является ли разрешим
Мы уважаем \ (ах + Ьу = с \ ) тип линейных уравнений , если и только если \ (НОД (а, Ь) | с \) , когда разрешимость
Может быть решено путем следующих кодов для решения (развернуть Евклид)
//ax+by = gcd(a,b)
long long extend_gcd(long long a,long long b,long long &x,long long &y)
{
if(a==0&&b==0) return -1;
if(b==0) {x = 1; y = 0; return a;}
long long d = extend_gcd(b,a%b,y,x);
y -= a/b*x;
return d;
}
Набор \ (г = НОД (а, т) \) , то
- Если не делится на г С Это уравнение не имеет решения
- Если \ (г \ середина с \) в точности формулы она модифицирована с различными растворами г
Примечание: Наиболее важный случай является линейной конгруэнции уравнения \ (НОД (а, т) = 1 \) В этом случае, то же ниже точно одно решение формулы I
В это время, и с = 1, называются к й м от обратного элемента
Ищу обратный следующим образом:
long long extend_gcd(long long a,long long b,long long &x,long long &y)
{
if(a==0&&b==0) return -1;
if(b==0) {x = 1; y = 0; return a;}
long long d = extend_gcd(b,a%b,y,x);
y -= a/b*x;
return d;
}
ll getInv(int a,int mod)
{
ll x,y;
ll d=extend_gcd(a,mod,x,y);
return d==1?(x%mod+mod)%mod:-1;
}