2017-02-08 7 views
0

Эта программа должна вернуть nth prime, используя две функции: nthPrime(n) и isPrime(candidatePrime, Vector<int >&primes). Мы сохраняем проверенные числа, которые являются первичными в векторе, а затем делят последовательный кандидат на элементы из вектора. Но моя программа не останавливается, и никакой вывод не отображается.Программа не останавливается и продолжает работать

Код:

isPrime(int candidatePrime,Vector<int >&primes

+11

Опубликуйте свой [mcve] как текст в вопросе, а не как изображение. – NathanOliver

+1

Одна из проблем заключается в том, что вы добавляете кандидата в контейнер, прежде чем проверять его на * все * другие значения в контейнере. Таким образом, 'size()' будет расти почти каждый раз, и 'i', возможно, никогда не достигнет его. –

+0

как я могу заставить кандидата проверить все простые числа? если деление возможно любым из числа, то кандидат не является простым, а затем принимающий решение становится ложным. то что мне делать? Я добавляю какое-либо условие &&, например, если кандидат не делится на какие-либо числа, а затем задает decider как истинный? –

ответ

1

Вы, возможно, потребуется удалить строку, где вы добавляете в контейнер (строка 94) снаружи для цикла.

+0

ok, я буду тогда, где я буду хранить мои уже отсортированные простые числа? –

0

Одна из причин проблемы, с которой вы столкнулись, как @bo persson, также упомянула, что вы добавили кандидата в контейнер, прежде чем проверять его на все остальные значения в контейнере. Следовательно, size() будет расти почти каждый раз, и «i», возможно, никогда не достигнет его.

@farhat предоставил одно решение проблемы, однако альтернатива ответа Farhat могла бы использовать другой вектор, чтобы добавить туда элементы и сохранить инструкцию там, где она сейчас находится.