0

我有一个List在 Java 中使用 a 的算法,声明如下:

public static List<Integer> primeFactors(int numbers) {
    int n = numbers; 
    List<Integer> factors = new ArrayList<Integer>();
    for (int i = 2; i <= n / i; i++) {
        while (n % i == 0) {
            factors.add(i);
            n /= i;
        }
    }
    if (n > 1) {
        factors.add(n);
    }
    return factors;
}

我想要做的是获取这个函数返回的素数并添加它们。我知道我可以使用

for (Integer integer : primeFactors(NUMBER))

对添加到的每个素数做一些事情List,所以我猜当我添加它们时,答案将是这些。这样的事情可能吗?

感谢您的任何帮助。

4

2 回答 2

2

所以基本上在循环外有一个变量,然后你可以做这样的事情:

List list = primeFactors(NUMBER);
int sum = 0;
for(Integer number : list){
    sum += number;
}

在该循环结束时, sum 将包含您想要的数字!

于 2012-01-06T01:27:53.473 回答
1

您可以在算法中添加所需的元素,因为您已经对元素进行了迭代。该函数将为 primeFactors(65) -> 5*13 返回 18

    public static void main(String[] args) {
    int sumOfPrimeFactors = primeFactors(65);
    System.out.println(sumOfPrimeFactors);
}

public static int primeFactors(int numbers) {
    int sum = 0;
    int n = numbers;
    int i;

    for (i = 2; i <= n / i; i++) {
        while (n % i == 0) {
            sum += i;

            n /= i;
        }
    }
    if (n > 1) {
        sum += n;
    }
    return sum;
}
于 2012-01-06T01:45:26.537 回答