Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 使用指数的因式分解循环_Loops_For Loop_While Loop_Factorization - Fatal编程技术网

Loops 使用指数的因式分解循环

Loops 使用指数的因式分解循环,loops,for-loop,while-loop,factorization,Loops,For Loop,While Loop,Factorization,这个程序基本上使用指数进行因子和打印。它正在接近正确的答案,但它继续循环,并没有将它们打印在同一行上。例如,对于600,它应该打印2^3*3*5^2,但继续打印2^3(新行)3^1(新行)5^2,重复 更新:通过修复sentinal修复了重复问题,现在打印2^3^1 5^2,只需现在正确打印即可 import java.util.Scanner; class Factoring { int n; void setN(int u) { n = u; }

这个程序基本上使用指数进行因子和打印。它正在接近正确的答案,但它继续循环,并没有将它们打印在同一行上。例如,对于600,它应该打印2^3*3*5^2,但继续打印2^3(新行)3^1(新行)5^2,重复

更新:通过修复sentinal修复了重复问题,现在打印2^3^1 5^2,只需现在正确打印即可

import java.util.Scanner;
class Factoring {
    int n;
    void setN(int u) {
        n = u;
    }

    int getN() {
        return n;
    }

    void factorize() {
        int cnt;

        for (int i = 2; i <= n; i++) {
            cnt = 0;
            while (n%i == 0) {
                cnt++;
                n /= i;
            }
            if (cnt == 0)
                continue;
            System.out.println(i + "^" + cnt);
        }
    }
}

public class Hw10 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Factoring myF = new Factoring();

        int u;

        System.out.print("Enter a number(1 or less to stop)");
        u = in.nextInt();
        while (u > 1) {
            myF.setN(u);
            myF.factorize();

            System.out.print("Enter a number(1 or less to stop)");
            u = in.nextInt();
        }
        System.out.print("bye");
    }
}
import java.util.Scanner;
类别分解{
int n;
无效设置(int u){
n=u;
}
int getN(){
返回n;
}
void factorize(){
int-cnt;
对于(int i=2;i 1){
多年电价设定值(u);
myF.factorize();
系统输出打印(“输入一个数字(1或更少以停止)”;
u=in.nextInt();
}
系统输出打印(“再见”);
}
}

您需要在循环中使用一个标志来确定它是否是第一个因素,例如

    int cnt;
    boolean isFirstFactor = true;

    for (int i = 2; i <= n; i++) {
        cnt = 0;
        while (n%i == 0) {
            cnt++;
            n /= i;
        }
        if (cnt == 0)
            continue;
        if (isFirstFactor)
            isFirstFactor = false;
        else
            System.out.print(" * ");
        System.out.print(i + "^" + cnt);
    }
int-cnt;
布尔值isFirstFactor=true;
对于(int i=2;i