【发布时间】:2020-03-23 17:31:40
【问题描述】:
我正在尝试编写一个 java 代码,它以两种形式显示数字的素数分解:乘以和乘以指数。例如,正确的输出如下所示:
输入一个数字
100
100 的素数分解是:
100 = 2 * 2 * 5 * 5
100 = 2^2 * 5^5
除了我当前的代码只输出这个:
输入一个数字
100
100 的素数分解是:
100 = 2 2 5 5
我的代码如下所示:
import java.util.Scanner;
public class Factorization {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
// user inputs variables here
System.out.println("Enter a number");
long n = keyboard.nextLong();
System.out.println("The prime factorization of " + n + " is: ");
System.out.print(n+" = ");
// solution for 1 as an input
if(n==1){
System.out.println("1");
}
// for each potential factor
for (long factor = 2; factor*factor <= n; factor++) {
// if factor is a factor of n, repeatedly divide it out
while (n % factor == 0) {
System.out.print(factor + " ");
n = n / factor;
}
}
// if biggest factor occurs only once, n > 1
if (n > 1){
System.out.println(n);
} else {
System.out.println();
}
}
}
我怎样才能让它给出正确的输出?
非常感谢!
【问题讨论】:
标签: java for-loop while-loop exponent factorization