通过调用函数打印素数

时间:2015-11-03 15:17:38

标签: c++ function

如何在每次调用它时调用下一个素数的函数?

这就是我所拥有的:

#include <iostream>
#include <cmath>

void prime();

using namespace std;



int main()
{
    void prime();
}

bool isPrime(int integer)
{
    int x;
    int br = 0;

    for (x = 1; x < integer; x++) {
        if (integer % x == 0) {
            br++;
        }
    }

    if (br == 1) {
        cout << " The number " << integer << " is prime " << endl;
    }
    else if (br > 1) {
        cout << " The number " << integer << " is not prime " << endl;
    }
}

void prime(){
for (int x = 2;x<1000;x++){
    isPrime(x);
}

}

运行时没有显示任何内容。 编辑:这里我添加了主要功能......

3 个答案:

答案 0 :(得分:6)

int main()
{
    void prime();
}

void prime();是一个函数声明。它没有效果;该函数未被调用。您必须致电该功能:

int main()
{
    prime();
}

然后还有另一个大问题。您的isPrime函数不会返回任何内容。向其添加return语句:

return br == 1;

如果打算让函数返回任何内容(并且您的代码当前不使用返回的值,那么这可能确实是您的意图),那么将其设为{{1功能。

答案 1 :(得分:0)

isPrime是布尔函数,期望返回true或false,代码中没有返回。如果您只是想“控制”控制台上的数字,请将其设为无效。

答案 2 :(得分:-1)

您的代码的主要问题是您没有从isPrime函数返回任何内容(应该返回一个布尔值)。

为此,您可以将代码重写为:

bool is_prime(int integer) {
    if (integer < 2) return true;
    auto range = boost::irange(2, integer);
    auto pred = [integer](auto i) { return integer % i == 0; };
    return find_if(range, pred) == std::end(range);
}

Live demo

第二,你的主要:

int main()
{
    void prime();
}

实际上只是声明函数prime。为了打电话,你可以写:

void prime();
int main() {
    prime();
}