Stroustrup第4章练习11

时间:2016-06-03 16:09:27

标签: c++

我正在编程:原理和实践使用C ++,我在第4章,练习11.问题是你想要编写一个程序,检测1 ans 100之间的所有素数。这是我到目前为止

//This program finds the prime numbers between 1 and 100 
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;

vector<int>primes;
bool ptest(int y)
{
    int p=0, x=0;
    for (x==0; x<primes.size(); ++p)
    {
        if (y%primes[x]==0)
        {
            return false;
        }
            return true;
    }
}

int main()
{
    int i=3;
    primes.push_back(2);
    vector<int>comp;
    for (i==3; i<=100; ++i)
    {
        if (ptest(i)==true)
        {
            primes.push_back(i);
        }

    }

    for (int x:primes)
    {
        cout << x << " ";
    }

}       

由于某种原因,该程序打印2,然后是3-100的所有赔率。我不确定我在这里缺少什么。

编辑:问题已得到解答。 p来自之前的尝试,我忘了改变。这里的主要错误是我不知道return true值属于循环之外。 谢谢

1 个答案:

答案 0 :(得分:2)

错误:

  • 您的Form.prototype.formValidate = function($form){ var self = this; $form.on('submit', function(e){ e.preventDefault(); self.test(); }); }; 位置错误。 循环之后应该是
  • return true;必须在迭代中更新。

警告:

  • x循环中的第一个表达式x==0毫无意义。
  • for没有意义,因为它没有使用它的值。

试试这个:

p