-6

2 から "n" までの間にいくつの素数があるかを数えるプログラムをコーディングする必要があります。

最初の入力はテストの総数である必要があり、他の入力は「n」(チェックする数の範囲の数の制限) である必要があります。

問題:

私の入力:7 10 15 50 100 1000 10000 7

上記の入力に対する正しい出力:4 6 15 25 168 1229 4

私のコードが出力するもの:4 6 15 25 800 9800 4

私のコード:

#include <iostream>

using namespace std;

int f(int number){
    int m=0,k=1;
    for(k; k<=number; k++)
        if(number%k==0)
            m++;
    if(m==2)
        return true;
}  

    int main (){
    int limit=0, counter=0, test=0;
    bool n;
    cin>>test;
    for(int v=0; v<test; v++){
        cin>>limit;
        for(int i=2; i<=limit; i++){
            n=f(i);
            if (n==true)
                counter++;
        }
        cout<<counter<<endl;
        counter=0;
    }
    return 0;
}
4

1 に答える 1

2

おそらく、コンパイラで警告をオンにする必要があります。関数 f は (宣言された int ではなく) bool を返しますが、x の約数が 2 に等しくない限り、そうしません。これは、まともな C++ コンパイラであれば警告すべきかなり些細な間違いです。警告を無視しないでください。

于 2013-05-12T17:09:59.533 に答える