作业帮 > 综合 > 作业

编程求不定方程组 在区间[-100,100]上的整数解的个数,并打印出所有的整数解.

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/04 13:50:36
编程求不定方程组 在区间[-100,100]上的整数解的个数,并打印出所有的整数解.
3x+4y-z=32
x*y=16z
编程求不定方程组 在区间[-100,100]上的整数解的个数,并打印出所有的整数解.
我先补充一下,我假设x ,y,z 都在[-100,100].
由上面的式子可以推出:
z = x*y/16
3x + 4y -32 = x * y / 16
算法的空间复杂度,时间杂度度就不分析了.
另外由上面的式子可推出:x * y - 48x - 64y + 512 = 0 ,类似的不定方程的理论和求解方法见:
java的实现程序如下:
/**
* @author borqs.slieer
*/
public class Test {
final static double MAX_X_VALUE = 100;
final static double MIN_X_VALUE = -100;
final static double MAX_Y_VALUE = 100;
final static double MIN_Y_VALUE = -100;
final static double MAX_Z_VALUE = 100;
final static double MIN_Z_VALUE = -100;
public static void main(String...args){
execute();
}
/**在闭区间[-100,100]中,求解方程组3x+4y-z=32 x*y = 16z*/
public static void execute() {
double x = 0.0;
double y = 0.0;
double z = 0.0;
long count = 0;
for(double i = MIN_X_VALUE; i < MAX_X_VALUE; i++){
for(double j = MIN_Y_VALUE; j < MAX_Y_VALUE; j++){
double ij = i * j;
z = (ij) / 16 ;
if(z < MIN_Z_VALUE || z > MAX_Z_VALUE){
break;
}
if((i * j) % 16 == 0.0){
if(48* i + 64 * j - 512 == ij){
x = i;
y = j;
System.out.println("x,y,z :" + x + "," + y + "," + z);
count ++;
}
}
}
}
System.out.println("count value:" + count);
}
}
执行结果:
x,y,z :-16.0,16.0,-16.0
x,y,z :0.0,8.0,0.0
count value:2