Не удается напечатать большое количество простых чисел на консоли

#java #eclipse

Вопрос:

У меня была проблема со следующей программой:

 public class PrimeFinder implements Runnable {
    Thread go;
    StringBuffer primes = new StringBuffer();
    int time = 0;
    
    public PrimeFinder() {
        start();
        while (primes != null) {
            System.out.println(time);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException exc) {
                // do nothing
            }
            time  ;
        }
    }
    
    public void start() {
        if (go == null) {
            go = new Thread(this);
            go.start();
        }
    }
    
    public void run() {
        int quantity = 1_000_000;
        int numPrimes = 0;
        // candidate: the number than might be prime
        int candidate = 2;
        primes.append("nFirst ").append(quantity).append(" primes:nn");
        while (numPrimes < quantity) {
            if (isPrime(candidate)) {
                primes.append(candidate).append(" ");
                numPrimes  ;
            }
            candidate  ;
        }
        System.out.println(primes);
        primes = null;
        System.out.println("nTime elapsed: "   time   " seconds");
    }
    
    public static boolean isPrime(int checkNumber) {
        double root = Math.sqrt(checkNumber);
        for (int i = 2; i <= root; i  ) {
            if (checkNumber % i == 0) {
                return false;
            }
        }
        return true;
    }
    
    public static void main (String[] arguments) {
        new PrimeFinder();
    }
}
 

Программа подсчитает время, необходимое для вывода всех простых чисел на консоль.
начиная с 0 секунд до x (когда программа завершится)

Затем выведет x число простых чисел (строка 29: количество = 1_000_000).

Затем выведет «Прошедшее время: x секунд

когда я запускаю программу с меньшим количеством (например, 10), она будет печатать до » 29 » (10-е простое число).

Я предполагаю, что в eclipse есть некоторое ограничение, которое не позволяет печатать большое количество чисел на консоль.

Изменить: ровно в 5572 вывод на консоль будет очищен, это вывод:

сколько простых чисел вы хотели бы увидеть? 5572

0 //это время, когда программа запущена

Первые 5572 простых числа:

Прошедшее время: 0 секунд.

при копировании и вставке сюда номера переносились, поэтому он просто исчез с консоли.

Комментарии:

1. Также обратите внимание, что это создает одну очень длинную строку, которая консоли не очень нравится.

Ответ №1:

Выход вашей консоли, вероятно, ограничен. В Затмении, должно быть…

Окно > Настройки >> Запуск/Отладка >>> Консоль

Снимите флажок Ограничить вывод консоли.

настройки eclipse

Комментарии:

1. Не решил эту конкретную проблему, но вызвал бы свою собственную отдельную проблему, спасибо!

Ответ №2:

вывод консоли печатался в одной строке, добавлено «n» для оператора if в строках: (41-46)

 if (isPrime(candidate)) {
                primes.append(candidate  "n").append(" "); //if candidate is prime, print # then space " "
                numPrimes  ;
            }
            candidate  ;
        }
 

Теперь печатает вертикально.