求贝祖公式的解
package demo2;
public class P96 {
//对任意整数a、b和它们的gcd
//当且仅当m为gcd的整数倍时,ax+by=m(贝祖公式)有整数解
//要求给出其中一组解
//原理:不妨先算ax+by=gcd,用辗转相除法求a、b的gcd,
//则化到最后a2=gcd,b2=0,相应的,x2=1,y2不妨取0
//根据辗转相除法公式,有逆推上一步x、y的公式
//上一层x1=y2 , y1=x2-(a/b * y2)
static long x;
static long y;
public static void main(String[] args) {
linearEquation(2, 7, 1);
System.out.println(x+" , "+y);
}
static long gcdForXy(long a,long b) {
//全局变量改x,y,返回gcd
if(b==0) {
x=1;
y=0;
return a;
}
long gcd=gcdForXy(b, a%b);
long x2=x;
x=y;
y=x2-a/b*y;
return gcd;
}
static void linearEquation(long a,long b,long m) {
long gcd=gcdForXy(a, b);
long k=m/gcd;
x=x*k;
y=y*k;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?