繁体   English   中英

C++ isPrime function: How can I return a Boolean value from a function that takes an integer parameter?

[英]C++ isPrime function: How can I return a Boolean value from a function that takes an integer parameter?

我必须创建一个 function ,它接受一个名为 number 的 integer 参数,并且 function 将检查 number 是否为质数。 一切正常,但用户的 output 将是 0 或 1,分别为假和真。 但是,如果数字是否为素数,我如何将其更改为分别返回“True”或“False”。

这是我的代码:

#include<iostream>

int isPrime(int);

int main()
{
  int number = 3;

  std::cout << isPrime(number);

  return 0;
}



int isPrime(int number)
{
  bool isPrime = true;

  if(number < 0)
    std::cout << "Number must be a positive integer.\n";

  else if(number == 0 || number == 1)
    isPrime = false;
  else
  {
    for(int divisor = 2; divisor <= number / 2; divisor++)
    {
      if(number % divisor == 0)
      {
        isPrime = false;
        break;
      }
    }
  }

  
  return isPrime;
}

首先,您的 function 应该返回bool而不是int

bool isPrime(int number) ...

接下来,您需要告诉cout您要将 boolean 值打印为truefalse而不是10 这可以通过std::boolalpha来完成:

std::cout << std::boolalpha << isPrime(number);

为此,您必须#include <ios>

编辑

要回答评论中的一些问题:

如果 function 的类型是 int 而不是 bool,会出现什么问题?

类型系统的全部意义在于表达和限制程序的行为。 如果您调用 function,您最好知道传递给 function 的内容以及 function 返回的内容。 类型可以帮助你。

以您的isPrime function 为例。 假设您没有写 function 但其他人写了,您只是将它用作库。 您会看到 function 签名int isPrime(int); . function 将int作为参数,您可能会猜到该参数是什么:您要检查的数字。

现在看看返回类型int 这是什么意思? function 名称isPrime表示 function 回答了一个简单的是/否问题:给定的数字是质数吗? 但是, int可以表示的不仅仅是yesno 例如,如果 function 返回2-1000是什么意思(记住:你没有写这个 function 并且你看不到它的实现)? 哪个值代表yes ,哪个no 如果您将该 function 的返回类型更改为bool ,该类型只有 2 个可能值: truefalse ,您会立即了解返回值的含义。

我要在主 function 中打印出来吗

这更像是一个设计问题,并且始终取决于您非常具体的用例。 仅给出问题中的代码:是的。 您将业务逻辑(进行主要检查的部分)与 IO / 用户交互部分分开。 通常,这使代码更具可读性和可调试性,这是软件开发的两个非常重要的方面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM