当前位置: 代码迷 >> java >> Java程序未输出正确的值
  详细解决方案

Java程序未输出正确的值

热度:81   发布时间:2023-07-31 11:32:30.0

我正在尝试创建一个简单的程序,确定是否可以将数字写成n ^ x以及n和x是什么。 例如:81 = 3 ^ 4。 我的程序正确识别了可以写为n ^ x的数字,但是n和x的值相去甚远。 (这只是一种练习)。 我的编码中的逻辑有点令人困惑,所以这基本上是什么。 首先,它找到一个可以除以a(选定的数字)的数字,然后确定是否可以将a除以该数字直至达到1。然后确定达到1所需的次数。找不到逻辑上的任何问题。 这是我的代码。

public static void main(String[] args) {

    Scanner scan1 = new Scanner(System.in);
    int a = scan1.nextInt();
    scan1.close();
    int i = 2;
    boolean y = false;
    int x = 0;

    for (; i <= Math.sqrt(a); i++) {
        if (a % i == 0) {
            int n = i;
            for (; n <= a; n *= i) {
                if (a % n != 0) {
                    y = false;
                    break;
                }
                x++;
                y = true;
            }
        }
    }

    if (y == true) {
        System.out.println(a + " = " + i + " ^ " + x);
    }
    else {
        System.out.println("Your number cannot be represented as n^x");
    }
}
public static void main(String[] args) {

    Scanner scan1 = new Scanner(System.in);
    int a = scan1.nextInt();
    scan1.close();
    int i = 2;
    boolean y = false;
    int x = 0;

    for(; i <= Math.sqrt(a); i++) {
        if (a % i == 0) {
            int n = i;
            for (; n <= a; n *= i) {
                if (a % n != 0) {
                    y = false;
                } 
                y = true;
                x = n;
                break;
            }
        }
    }

    i--;

    if (y == true) {
        System.out.println(a + " = " + i + " ^ " + x);
    }
    else {
        System.out.println("Your number cannot be represented as n^x");
    }
}

对外部循环使用do-while,您将不需要i--; 在末尾。

  相关解决方案