Это занимает менее 1 мс.

шение:
Оказывается, в самом коде нет (вероятно) «ничего плохого»; это просто неэффективно. Если моя математика верна, если я оставлю ее включенной, это будет сделано к пятнице, 14 октября 2011 года. Я дам вам знать!

Предупреждение: это может содержать спойлеры, если вы пытаетесь решить проект Euler # 3.

Проблема говорит это:

Основными факторами 13195 являются 5, 7, 13 и 29.

Что является самым большим основным фактором числа 600851475143?

Вот моя попытка ее решить. Я только начинаю с Java и программирования в целом, и я знаю, что это не самое хорошее и эффективное решение.

import java.util.ArrayList;

public class Improved {
    public static void main(String[] args) {
        long number = 600851475143L;
        // long number = 13195L;
        long check = number - 1;
        boolean prime = true;

        ArrayList<Number> allPrimes = new ArrayList<Number>();

        do {
            for (long i = check - 1; i > 2; i--) {
                if (check % i == 0) {
                    prime = false;
                }
            }

            if (prime == true && number % check == 0) {
                allPrimes.add(check);
            }

            prime = true;
            check--;
        } while (check > 2);

        System.out.println(allPrimes);
    }
}

когдаnumber&nbsp;установлен в13195, программа работает просто отлично, дает результат[29, 13, 7, 5]&nbsp;как это должно.

Почему это не работает для больших значенийnumber?

Тесно связаны (но не обманывать):Сообщение об ошибке «Слишком большое целое число» для 600851475143