gpt4 book ai didi

java - 为什么我的计算多个整数的最大公约数的代码没有返回任何内容?

转载 作者:行者123 更新时间:2023-12-01 12:55:50 25 4
gpt4 key购买 nike

我编写了以下代码来计算未指定数量的整数的 gcd。

import java.util.Scanner;
public class GcdOfUnspecifiedNumberOfIntegers {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
int[] list = new int[5];

for (int i = 0; i < 5; i++) {
System.out.println("Enter a number: ");
list[i] = input.nextInt();
}

gcd(list);
}

// Get the gcd of multiple integers
public static void gcd(int...numbers) {
int gcd = 1;

for (int i = 0; i < numbers.length; i++) {
gcd = gcdOfTwo(gcd, numbers[i]);
}

System.out.println("The gcd is: " + gcd);

}

// Get the gcd of two integers
public static int gcdOfTwo(int a, int b) {
int gcdOfTwo = 1;
int possibleGcd = 1;

while (gcdOfTwo <= a && gcdOfTwo <= b) {
if (a % possibleGcd == 0 && b % possibleGcd == 0) {
gcdOfTwo = possibleGcd;
possibleGcd++;
}
}

return gcdOfTwo;
}

}

我的想法是获取两个数字的gcd(假设是GCD),并获取GCD和第三个数字的gcd,依此类推。

问题看起来像是“gcd(list)”无法正常工作。当我输入所有整数并按回车键后,没有任何反应。

--- 更新 ---

我已经将 possibleGcd++ 从 if 语句中移出,但它仍然有问题,因为控制台给了我这个:

Enter a number: 
1
Enter a number:
2
Enter a number:
3
Enter a number:
4
Enter a number:
5
Exception in thread "main" java.lang.ArithmeticException: / by zero
at GcdOfUnspecifiedNumberOfIntegers.gcdOfTwo(GcdOfUnspecifiedNumberOfIntegers.java:35)
at GcdOfUnspecifiedNumberOfIntegers.gcd(GcdOfUnspecifiedNumberOfIntegers.java:22)
at GcdOfUnspecifiedNumberOfIntegers.main(GcdOfUnspecifiedNumberOfIntegers.java:14)
<小时/>

已解决

我应该使用 while (possibleGcd <= a && possibleGcd <= b) 而不是 while (gcdOfTwo <= a && gcdOfTwo <= b)。

最佳答案

将 while 循环更改为:

while (possibleGcd <= a && possibleGcd <= b) {
if (a % possibleGcd == 0 && b % possibleGcd == 0) {
gcdOfTwo = possibleGcd;
}
possibleGcd++;
}

关于java - 为什么我的计算多个整数的最大公约数的代码没有返回任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com