写N个素数的程序

时间:2014-07-06 09:37:50

标签: c++

如果我将i++,j++,N--替换为++i,++j,--N,该程序的输出如何不受影响?

在这两种情况下都返回N个素数?谁能告诉我为什么?

#include <iostream>
using namespace std;

int main(){
int N;
cin >> N;
for(int i=2;N>0;i++)
{
    bool IsPrime=true;
    for(int j=2;j<i;j++)
    {
        if(i % j == 0)
        {
        IsPrime=false;
        break;
        }
    }
    if(IsPrime)
    {
        N--;
        cout << i << "\n";
    }
}
return 0;
}

2 个答案:

答案 0 :(得分:3)

for循环中,如果您使用++xx++并不重要,除了++x稍微快一点,因为它不会创建临时变量

答案 1 :(得分:2)

a++++a之间的区别在于,之前是否增加之后是增加。请考虑以下示例:

int a = 5; 
cout << a++ << endl; //5
cout << a << endl; //6
a = 5;
cout << ++a << endl; //6
cout << a << endl; //6

您的循环不使用a++的值,因此 - 在我的示例中为cout << a << endl;,您将始终将变量增加1。

for循环的语法如下:

for(initialize;condition;step){ /*block*/}

initialize 部分在开头运行一次。对于每个循环,检查条件,然后执行步骤。它没有被评估,因此不能用条件推断。