问题是:
检查数字是否为素数。
当用户在
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;
}
答案 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;
}
我认为只考虑非负值是有道理的。否则,您应该在函数内部检查参数是正还是负。