簡體   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