一次不定方程
一次不定方程的公式為ax+by=c
如果數(shù)目較小的話,我們可以用暴力破解的方式來解決。
public class 不定方程 {
public static void main(String[] args){
for(int x=0;x<100;x++)
for(int y=0;y<100;y++){
if(4*x-5*y==7)
System.out.println(x+","+y);
}
}
}
但是拣度,數(shù)目較大的時候該怎么求解呢?
其實一次不定方程的公式:ax+by=c
螃壤,可以轉(zhuǎn)化為ax=c-by
步驟如下:
- 先求出一個特殊解
- 求通解抗果, x = x0 +bt; y = y0 - at
public class 不定方程 {
public static void main(String[] args) {
int x0 = 0, y0 = 0;
//求特解
for (int y = 0; y < 100; y++) {
if (((7 + 5 * y) % 4) == 0) {
// System.out.println("y0 = " + y + " ,x0 = " + ((7 + 5 * y) / 4));
x0 = ((7 + 5 * y) / 4);
y0 = y;
break;
}
}
//求通解
for (int t = -25; t < 25; t++) {
if (4*(x0 - 5 * t) - 5*(y0 - 4 * t) == 7)
System.out.println("x" + " = " + (x0 - 5 * t) + " ,y = " + (y0 - 4 * t));
}
}
}