用java写将一个数用素数展开的代码,并注释
时间: 2024-02-19 22:57:16 浏览: 65
以下是用Java写将一个数用素数展开的代码,并注释:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class PrimeFactors {
// 判断一个数是否为素数
public static boolean isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
// 将一个数用素数展开
public static ArrayList<Integer> primeFactors(int n) {
ArrayList<Integer> factors = new ArrayList<Integer>();
for (int i = 2; i <= n; i++) {
if (!isPrime(i)) continue; // 如果i不是素数,跳过本次循环
while (n % i == 0) { // 如果n能被i整除
factors.add(i); // 将i加入factors
n /= i; // n除以i
}
}
return factors;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个正整数:");
int n = scanner.nextInt();
ArrayList<Integer> factors = primeFactors(n);
System.out.print(n + "的素数展开式为:");
for (int i = 0; i < factors.size(); i++) {
System.out.print(factors.get(i));
if (i < factors.size() - 1) System.out.print(" * ");
}
System.out.println();
}
}
```
首先,我们定义了一个函数`isPrime`,用来判断一个数是否为素数。它的实现和C++版的一样,从2到该数的平方根,逐个判断是否能被整除。
接着,我们定义了另一个函数`primeFactors`,用来将一个数用素数展开。它的实现和C++版的一样,从2到该数,逐个判断是否为素数,如果是素数就尝试将该数除以它,直到无法整除为止,然后继续下一个素数。
最后,在`main`函数中,我们从用户输入一个正整数,然后调用`primeFactors`函数得到素数展开式。然后我们输出这个数和它的素数展开式,中间用`*`符号连接。由于Java中没有C++中的数组,我们使用了`ArrayList`来存储素数因子。
阅读全文