所以,是的,我要重新改述我上次所说的一切。我正在制作一个程序来查找两个数字的GCF和LCD。有很多方法可以找到GCF:
gcf = BigInteger.valueOf(x).gcd(BigInteger.valueOf(y)).intValue();
或欧几里德算法有两种类型,减法和余数法。
我们不允许使用任何数组或方法。我们必须使用控制结构和重复结构。
我做了减法方法,但我发现没有运气,所以我现在尝试了余数法。
int iA = 0, iB = 0, iG = 0, iL = 0, iR = 0;
if(iA != iB){
if (iA > iB){
iR = iA % iB;
iG = iB / iR;
iL = (iA*iB)/iG;
}
else{
iR = iB % iA;
iG = iA / iR;
iL = (iA*iB)/iG;
}
System.out.println("The GCF is: " + iG);
System.out.println("The LCD is: " + iL);
}
else{
System.out.println("The GCF is: " + iA);
System.out.println("The LCD is: " + iA);
现在,余数方法建议如果余数== 0,那么最后一个余数值是两个数字的GCF。我希望执行while
或do-while
结构,但我想不出办法。我的代码现在以错误的方式输入。
e.g。
First Number: 120
Second Number: 50
The GCF is: 2
但是(120,50)的gcf应该是10.如果解决它就像:
iR = 120 % 50
iG = 50 / 20
无论如何,如果两个数字的乘积被GCF分割,可以获得LCD,所以如果我找不到GCF,那就太忙了。
任何帮助都会非常感激。提前谢谢!
答案 0 :(得分:0)
当然,这是使用剩余方法的答案。
int iA = 0, iB = 0, iL = 0, iR;
System.out.print("Enter First Number: ");
iA = var.nextInt();
System.out.print("Enter Second Number: ");
iB = var.nextInt();
iL = (iA*iB);
if(iA != iB){
if (iA > iB){
do{
iR = iA % iB;
iA = iB;
iB = iR;
}while(iR != 0);
iL /= iA;
System.out.println("The GCF is: " + iA);
}
else if (iB > iA){
do{
iR = iB % iA;
iB = iA;
iA = iR;
}while(iR != 0);
iL /= iB;
System.out.println("The GCF is: " + iB);
}
System.out.println("The LCD is: " + iL);
}
else{
System.out.println("The GCF is: " + iA);
System.out.println("The LCD is: " + iA);
}