Loops 使用指数的因式分解循环
这个程序基本上使用指数进行因子和打印。它正在接近正确的答案,但它继续循环,并没有将它们打印在同一行上。例如,对于600,它应该打印2^3*3*5^2,但继续打印2^3(新行)3^1(新行)5^2,重复 更新:通过修复sentinal修复了重复问题,现在打印2^3^1 5^2,只需现在正确打印即可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; }
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