0

List次のように宣言された in Java を使用するアルゴリズムがあります。

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

そのループの最後に、合計には必要な数が含まれます!

于 2012-01-06T01:27:53.473 に答える
1

すでに要素を繰り返しているため、アルゴリズムに必要な要素を追加できます。関数は、primeFactors(65) に対して 18 を返します -> 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;
}
于 2012-01-06T01:45:26.537 に答える