不能使bool函数c ++

时间:2014-02-20 21:12:49

标签: c++ function boolean

问题是:

  

检查数字是否为素数。

     

当用户在switch中选择此选项时,程序会要求用户输入一个整数,然后将其传递给名为isPrime的函数。 isPrime是一个函数,它接受一个整数作为参数,如果参数是素数则返回true,否则返回false。

在文件(.h)中原型是

void isPrime ( int y )

我认为我得到的错误是因为函数的类型。

void isPrime(int num)
{
    bool prime = true;
    int i = 2;
    {
        if (num == 2)
            cout << prime;
    }
    while (i <= num - 1)
    {
        if (num % i == 0)
        {
            cout << false;
        }
        i++;
    }
    if (i == num)
        cout << prime;
}

只有正数

我把代码转换成了一个 另一种方式,但再次 它不起作用?


bool isPrime ( int num )
{
bool prime = true;
int i=2;
{if (num == 2)
    return prime;
}
while(i<=num-1)
{
if(num%i==0)
{

return false;
}
i++;
}
if(i==num)

return prime;
}

2 个答案:

答案 0 :(得分:3)

如果你要“拥有一个布尔函数”(也称为“返回一个布尔值”),你必须做两件事。首先,声明你的函数,使它知道它将返回一个像这样的布尔值:

bool isPrime ( int num )

然后return函数末尾的布尔值,如下所示:

return prime;

现在你可以设置一些与函数相等的东西,然后它会得到布尔值,如下所示:

x = isPrime(25);

x将是布尔值false(假设您的主要代码正常工作)。

答案 1 :(得分:1)

根据您的作业

  

isPrime是一个以整数作为参数的函数   如果参数是素数,则返回true,否则返回false。

所以它必须声明为

bool isPrime( unsigned int n );

在主要部分,你用类似的方式称呼它

std::cout << n << " is prime -> " << isPrime( n ) << std::endl;

所以你的函数isPrime错了。

可以通过以下方式定义

bool isPrime( unsigned int n )
{
   bool prime = ( n == 2 ) || ( n % 2 && n != 1 );

   for ( unsigned int i = 3; prime && i * i < n; i += 2 )
   {
      prime = value % i != 0;
   }

   return prime;
}

我认为只考虑非负值是有道理的。否则,您应该在函数内部检查参数是正还是负。