C++ 中的质数判断

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将学习如何在 C++ 中检查给定的数字是质数(prime)还是合数(composite)。质数是指大于 1 且只能被 1 和其自身整除的数字。合数是指大于 1 且可以被除了 1 和其自身以外的其他数字整除的数字。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("`C++`")) -.-> cpp/BasicsGroup(["`Basics`"]) cpp(("`C++`")) -.-> cpp/ControlFlowGroup(["`Control Flow`"]) cpp(("`C++`")) -.-> cpp/IOandFileHandlingGroup(["`I/O and File Handling`"]) cpp/BasicsGroup -.-> cpp/booleans("`Booleans`") cpp/ControlFlowGroup -.-> cpp/conditions("`Conditions`") cpp/ControlFlowGroup -.-> cpp/for_loop("`For Loop`") cpp/IOandFileHandlingGroup -.-> cpp/output("`Output`") cpp/IOandFileHandlingGroup -.-> cpp/user_input("`User Input`") subgraph Lab Skills cpp/booleans -.-> lab-96129{{"`C++ 中的质数判断`"}} cpp/conditions -.-> lab-96129{{"`C++ 中的质数判断`"}} cpp/for_loop -.-> lab-96129{{"`C++ 中的质数判断`"}} cpp/output -.-> lab-96129{{"`C++ 中的质数判断`"}} cpp/user_input -.-> lab-96129{{"`C++ 中的质数判断`"}} end

定义 isPrime() 函数

我们将定义一个函数 isPrime(),它接收一个整数并返回一个布尔值,表示该整数是否为质数。

#include <iostream>
#include <math.h>

using namespace std;

bool isPrime(int n)
{
    if (n == 1)
        return false; // 1 不是质数

    for (int i = 2; i <= sqrt(n); i++)
    {
        if (n % i == 0)
            return false;
    }

    return true;
}

在上面的代码中,我们检查给定的数字是否能被任何数字整除。如果没有这样的数字,则该数字是质数。如果数字是 1,则它不是质数。

编写 main() 函数

现在我们将编写 main() 函数,该函数从用户那里获取输入,并使用 isPrime() 函数来判断给定的数字是质数还是合数。

int main()
{
    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << " ===== 最高效的程序,用于判断输入的数字是否为质数。 ===== \n\n";

    cout << " ===== 注意:1 既不是质数也不是合数。 ===== \n\n";

    int n;
    bool prime = false;

    cout << " 请输入一个大于 1 的正整数:";
    cin >> n;

    prime = isPrime(n);

    if (prime)
    {
        cout << "\n\n输入的数字 " << n << " 是质数。";
    }
    else
    {
        cout << "\n\n输入的数字 " << n << " 是合数。";
    }

    cout << "\n\n\n";

    return 0;
}

编译并运行程序

使用 g++ 命令编译代码,如下所示:

g++ main.cpp -o main

然后使用命令 ./main 运行程序。

./main

程序会提示你输入一个大于 1 的正整数,输入数字后按回车键。

程序将输出输入的数字是质数还是合数。

main.cpp 完整代码

#include <iostream>
#include <math.h>

using namespace std;

bool isPrime(int n)
{
    if (n == 1)
        return false; // 1 不是质数

    for (int i = 2; i <= sqrt(n); i++)
    {
        if (n % i == 0)
            return false;
    }

    return true;
}

int main()
{
    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << " ===== 最高效的程序,用于判断输入的数字是否为质数。 ===== \n\n";

    cout << " ===== 注意:1 既不是质数也不是合数。 ===== \n\n";

    int n;
    bool prime = false;

    cout << " 请输入一个大于 1 的正整数:";
    cin >> n;

    prime = isPrime(n);

    if (prime)
    {
        cout << "\n\n输入的数字 " << n << " 是质数。";
    }
    else
    {
        cout << "\n\n输入的数字 " << n << " 是合数。";
    }

    cout << "\n\n\n";

    return 0;
}

总结

在本实验中,我们学习了如何在 C++ 中检查给定的数字是质数还是合数。我们使用了一个函数来判断给定的数字是否为质数,基于它是否能被除了 1 和其自身以外的其他数字整除。然后,我们在 main() 中使用了这个函数,它从用户那里获取输入,并输出该数字是质数还是合数。

您可能感兴趣的其他 C++ 教程