2017-02-08 8 views
0

このプログラムは、nthPrime(n)isPrime(candidatePrime, Vector<int >&primes)の2つの関数を使用してn番目のプライムを返します。ベクトルにプライムされているチェックされた数値を格納し、次に連続する候補をベクトルから要素で除算します。しかし、私のプログラムは停止せず、出力も表示されません。プログラムは停止せず、実行を継続します

コードは次のとおりです。

isPrime(int candidatePrime,Vector<int >&primes

+11

あなたの[mcve]を画像ではなく質問のテキストとして投稿してください。 – NathanOliver

+1

1つの問題は、コンテナ内の*すべての*他の値に対してチェックする前に、コンテナに候補を追加することです。そうすれば 'size()'はほとんど毎回増加し、 'i'は決してそれに到達しないかもしれません。 –

+0

候補をすべての素数に対してチェックする方法を教えてください。数字のいずれかで除算が可能な場合、候補はプライムではなく、決定子は偽になります。私は何をしなければならないのですか? 候補が任意の数で割り切れない場合など、&&条件をいくつか追加して、deciderをtrueに設定しますか? –

答えて

1

あなたはforループの外の容器(ライン94)に追加の行を削除する必要があります。

+0

大丈夫ですが、私はそれだけではなく、すでにソートされた素数をどこに保存しますか? –

0

@bo perssonも同様に言及している問題の原因の1つは です。コンテナ内の他のすべての値と比較する前に、候補をコンテナに追加するということです。したがって、size()はほとんど毎回増加し、 "i"は決してそれに到達しないかもしれません。

@farhatが問題の解決策を提供していますが、ファーハットの答えの代わりに、別のベクトルを使用して項目を追加し、現状のままにすることができます。

関連する問題