素数(C ++) - 不工作100%

时间:2013-05-12 17:06:09

标签: c++

我必须编写一个程序来计算在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;
}

1 个答案:

答案 0 :(得分:2)

您可能需要在编译器中打开警告。函数f返回bool(不是声明的int),除非x的除数的数量等于2,否则不会这样做。这是一个相当微不足道的错误,任何体面的C ++编译器都应该警告你。不要忽视警告。