2012-01-06 158 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