2016-07-24 7 views
-5

私はC++で作業しており、1001番目の素数を見つけようとしています。このコードを実行すると、関数がオーバーロードされているというエラーが14行目にスローされます。なぜ私にエラーを投げているのか教えていただけますか?ありがとう。コンパイラがなぜエラー関数のオーバーロードを投げているのですか?

#include <iostream> 

using namespace std; 



int main() { 
    cout << "Hi in this program I will tell you the 1001th prime number" << endl; 
    int number; 
    for (int i = 2; i < 1000000; i++) { 
     for (int prime = 2; prime < 1000000; prime ++) { 
      if (prime % i != 0) { 
       for (int count = 1; count < 100000; count ++) {} 
       cout << count << prime << " is a prime number" << endl;// this line has the problem 
      } 
     } 
    } 
} 
+2

エラーメッセージは何ですか? – immibis

+1

それを言い換えずに、エラーメッセージをコピーして貼り付けます。 –

+0

*完全な*エラーメッセージを質問の本文にコピーして貼り付けてください。 –

答えて

1

forループの後に、あなたの中括弧を見てみましょう:あなたは「数」を参照して次の行に到達する前に

for (int count = 1; count < 100000; count ++) {} 

あなたはループブロックのために閉じています。したがって、カウント変数は、印刷しようとするとスコープ内にありません。これにそれを変更してみてください:

  if (prime % i != 0) { 
       for (int count = 1; count < 100000; count ++) { 
       cout << count << prime << " is a prime number" << endl; 
       } // closing curly brace is here now :) 
      } 
1

「カウント」変数は、それが唯一の「for」ループ内のスコープのしています。そのループは、行末の '}'文字で終了します。

あなたのcout行で参照している数は、他の場所からのものです。私は、グローバルスコープのどこかで2つの "count"関数の定義を引っ張っていると仮定し、コンパイラはそれらのうちの1つを参照したいと思っていますが、どちらを取るべきかはわかりません。

+4

具体的には、 ''の 'std :: count'が' using namespace std; 'でスコープに持ち込まれています。ディレクティブを使用するとエラーメッセージが表示されなくなります。 – chris

関連する問題