-1
所以我需要摆脱每行最后的乘法符号。我尝试了几种不同的方式,但他们只是搞乱了我的代码,或者没有工作,我似乎无法围绕如何解决这个问题。我该如何做到这一点,因此最后的乘法符号不包含在阶乘的行中?
下面是输出的一个例子:
Starting value (at least 2):
59
Ending value (at least 2):
64
59 = 59 x
60 = 2 x 2 x 3 x 5 x
61 = 61 x
62 = 2 x 31 x
63 = 3 x 3 x 7 x
64 = 2 x 2 x 2 x 2 x 2 x 2 x
以下是我希望它看起来:
Starting value (at least 2):
59
Ending value (at least 2):
64
59 = 59
60 = 2 x 2 x 3 x 5
61 = 61
62 = 2 x 31
63 = 3 x 3 x 7
64 = 2 x 2 x 2 x 2 x 2 x 2
而这里的代码:
import java.util.Scanner;
public class PrimeFact {
public static void main(String[] args) {
int start, stop;
int number = 0;
Scanner input = new Scanner(System.in);
System.out.println("Starting value (at least 2): ");
start = input.nextInt();
System.out.println("Ending value (at least 2): ");
stop = input.nextInt();
// stops the program if the user entered n input that cannot be factored
if (start < 2 || stop < 2) {
System.out.println("Amount must be at least 2 rather than " + start + " and " + stop + ". Quitting.");
System.exit(0);
} // end if
// loop
// calls factors
for (int i = start; i <= stop; i++) {
number = i;
printFactors(i);
System.out.println();
} // ends loop
}// ends main
// prints prime factors
public static void printFactors(int number) {
int out = number;
int count = 0;
System.out.print(out + " = ");
for (int factor = 2; factor <= number; factor++) {
int exponent = 0;
while (number % factor == 0) {
number /= factor;
exponent++;
count++;
}
if (exponent > 0) {
printExponents(exponent, factor, count);
}
}
}
//prints the factors the required number of times
public static void printExponents(int exponent, int factor, int count) {
for (int q = 1; q <= exponent; q++) {
System.out.print(factor + " x ");
// if (q /= count) {
// System.out.print(factor);
// }
}
}
}// ends class
是System.out.print'(因子+(q!=指数? “x”:“”));' –
@ElliottFrisch你试过了吗?看起来像这样会在2x2x3x5的第二秒后抑制x。我得到你想要做的。我想在不是第一个因素(因为你预计第一个而不是最后一个)之前建立一个x。 –
@JeremyKahan在我自己的代码中,我可能会使用['StringJoiner'](https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html)。 –