我的代码出了什么问题? C ++

时间:2017-03-10 04:17:18

标签: c++ primes

我正在尝试将所有素数输出到输入的数字,我无法弄清楚为什么它不起作用。

有人可以花时间解释我做错了吗?

#include<iostream>
#include<string>
using namespace std;
int main() 
{
    int number;

    cout << "Enter Number: ";
    cin >> number;

    for (int a = 2;a <= number;a++)
    {

        bool prime = false;

        for (int b = 2;b < a;b++)
        {
            if (a%b == 0)
            {
                prime = true;
                break;
            }

            if (prime = true)
                cout << a << endl;
        }       
    }

    system("pause");
    return 0;
}   

2 个答案:

答案 0 :(得分:1)

在此代码中:

if (a%b == 0)
{
    prime = true;
        break;
}

你必须这样写:

if (a%b == 0)
{
    prime = false;
        break;
}

同时将bool prime = false;更改为bool prime = true;

最终这段代码:

if (prime == true)
    cout << a << endl;

必须在for loop

之外

你的代码会更好:

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int number;

    cout << "Enter Number: ";
    cin >> number;

    for (int a = 2; a <= number; a++)
    {

        bool prime = true;

        for (int b = 2; b < a; b++)
        {
            if (a%b == 0)
            {
                prime = false;
                break;
            }
        }

        if (prime == true)
            cout << a << endl;
    }

    system("pause");
    return 0;
}

结果(示例):

enter image description here

答案 1 :(得分:0)

 for(i=2;i<=number;i++)
 {
         ct=0;
         for(j=2;j<i;j++)
         {
             if(i%j==0)
                 {
                       ct=1;
                       break;
                 }
         }
         if(ct==0)
         {
             printf("%d \t",i);
         }
 }