C++ 我的循环查找素数的问题

C++ 我的循环查找素数的问题,c++,loops,primes,C++,Loops,Primes,我需要输出来读取数字,然后判断数字是否为素数。由于某种原因,当它达到11时,它不会输出它是素数,只是打印 11 12那个数字不是素数 我知道我的while循环有一个逻辑问题,但我无法解决。感谢您的帮助 int main() { bool isPrime = true; int sqrtNum; int divisor = 3; for(int i = 0; i < 100; i++) { cout << i <&

我需要输出来读取数字,然后判断数字是否为素数。由于某种原因,当它达到11时,它不会输出它是素数,只是打印 11 12那个数字不是素数

我知道我的while循环有一个逻辑问题,但我无法解决。感谢您的帮助

int main()
{
    bool isPrime = true;

    int sqrtNum;
    int divisor = 3;

    for(int i = 0; i < 100; i++)
    {
        cout << i << "\t";


        if (i == 0 || i == 1)
            cout << "That number is not prime." << endl;
        else if (i == 2)
            cout << "That number is prime." << endl;
        else if (i % 2 == 0)
            cout << "That number is not prime." << endl;
        else
        {
            sqrtNum = static_cast<int> (sqrt(static_cast<double>(i)));

            while (divisor <= sqrtNum)
            {
                if (i % divisor == 0)
                {
                    cout << "That number is not prime." << endl;
                    isPrime = false;
                    break;
                }
                else
                {
                    divisor = divisor + 2;
                }
            }
            if (isPrime)
            {
                cout << "That number is prime" << endl;
            }
        }

    }
    system("pause");
    retu
intmain()
{
bool isPrime=true;
int-sqrtNum;
整数除数=3;
对于(int i=0;i<100;i++)
{

cout从注释中可以清楚地看到,您忘记在循环中重置
isPrime
除数
的值。为了避免这样的错误,最好只在使用这些变量的范围内定义这些变量

int main()
{
    for(int i = 0; i < 100; i++)
    {
        cout << i << "\t";


        if (i == 0 || i == 1)
            cout << "That number is not prime." << endl;
        else if (i == 2)
            cout << "That number is prime." << endl;
        else if (i % 2 == 0)
            cout << "That number is not prime." << endl;
        else
        {
            bool isPrime = true;
            int divisor = 3;
            int sqrtNum = static_cast<int> (sqrt(static_cast<double>(i)));
intmain()
{
对于(int i=0;i<100;i++)
{

cout从注释中可以清楚地看到,您忘记在循环中重置
isPrime
除数
的值。为了避免这样的错误,最好只在使用这些变量的范围内定义这些变量

int main()
{
    for(int i = 0; i < 100; i++)
    {
        cout << i << "\t";


        if (i == 0 || i == 1)
            cout << "That number is not prime." << endl;
        else if (i == 2)
            cout << "That number is prime." << endl;
        else if (i % 2 == 0)
            cout << "That number is not prime." << endl;
        else
        {
            bool isPrime = true;
            int divisor = 3;
            int sqrtNum = static_cast<int> (sqrt(static_cast<double>(i)));
intmain()
{
对于(int i=0;i<100;i++)
{

cout从注释中可以清楚地看到,您忘记在循环中重置
isPrime
除数
的值。为了避免这样的错误,最好只在使用这些变量的范围内定义这些变量

int main()
{
    for(int i = 0; i < 100; i++)
    {
        cout << i << "\t";


        if (i == 0 || i == 1)
            cout << "That number is not prime." << endl;
        else if (i == 2)
            cout << "That number is prime." << endl;
        else if (i % 2 == 0)
            cout << "That number is not prime." << endl;
        else
        {
            bool isPrime = true;
            int divisor = 3;
            int sqrtNum = static_cast<int> (sqrt(static_cast<double>(i)));
intmain()
{
对于(int i=0;i<100;i++)
{

cout从注释中可以清楚地看到,您忘记在循环中重置
isPrime
除数
的值。为了避免这样的错误,最好只在使用这些变量的范围内定义这些变量

int main()
{
    for(int i = 0; i < 100; i++)
    {
        cout << i << "\t";


        if (i == 0 || i == 1)
            cout << "That number is not prime." << endl;
        else if (i == 2)
            cout << "That number is prime." << endl;
        else if (i % 2 == 0)
            cout << "That number is not prime." << endl;
        else
        {
            bool isPrime = true;
            int divisor = 3;
            int sqrtNum = static_cast<int> (sqrt(static_cast<double>(i)));
intmain()
{
对于(int i=0;i<100;i++)
{

你能在调试器下运行它吗?你忘了在每次循环中重置iPrime你也忘了在循环中重置除数。你练习仔细阅读你的代码。这些都是通过快速检查发现的简单问题。你是在调试器下运行的吗?你忘了在每次循环中重置iPrime你也开始在循环中重置除数。你练习仔细阅读你的代码。这些都是通过快速检查发现的简单问题。你是在调试器下运行的吗?你忘了在循环中每次重置iPrime你也忘了在循环中重置除数。你练习仔细阅读代码你的代码。这些都是通过快速检查发现的简单问题。你是在调试器下运行的吗?你忘了在循环中每次重置iPrime你还忘了在循环中重置除数。你练习仔细阅读代码。这些都是通过快速检查发现的简单问题。