【发布时间】:2018-12-23 20:21:28
【问题描述】:
我在学校有一个问题要解决,它是这样的:
编写一个程序,读取一个大于 1 的正整数,然后按升序打印出该数的质因数。如果该数是质数,则打印出该数,然后是一个声明它是质数的语句,如其中一个示例所示。
然后我编写了这个程序,当我放入一个实际的素数时,它具有预期的行为。如果我输入 97,输出将是“97 是质数”。就像假设的那样。
但是当我输入 120 时,它会打印“2 2 2 3 5 是质数”,而预期的行为只会打印数字而不是“是质数”文本。
检查输入数字是否为素数的方法,如果是,则打印它的因数:
public static void primeFactors(int n) {
while (n % 2 == 0) {
System.out.print(2 + " ");
n = n/2;
}
for (int i = 3; i <= Math.sqrt(n); i = i+2) {
while (n % i == 0) {
System.out.print(i + " ");
n = n/i;
}
}
if (n > 2) {
System.out.print(n + " is a prime number.");
}
}
主要方法:
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
primeFactors(n);
}
所以我需要一些帮助来弄清楚如何使它成为“素数”。仅当输入的数字特别是素数时才打印结尾。
【问题讨论】:
标签: java primes prime-factoring factorization