2012-01-06 65 views
0

我有一个使用Java中的List即宣告这样一个算法:添加从列表中返回的元素

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,所以我猜答案是沿着这些路线的东西时,我将它们添加。是这样的可能吗?

感谢您的帮助。

+0

您是指列表元素的总和? – adatapost 2012-01-06 01:25:54

+0

@AVD我的意思是元素的总和。我知道这很糟糕,所以我的意思是:如果元素[0],[1],[2]分别包含5,7,9,我想添加5,7和9. – nmagerko 2012-01-06 01:29:37

回答

2

所以基本上有外循环的变量,那么你可以做这样的事情:

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

在这个循环结束时,总和将包含你要的号码!

+0

看起来不错! – nmagerko 2012-01-06 01:31:07

1

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

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; 
} 
+0

我也很喜欢这个! – nmagerko 2012-01-06 01:52:50