目前我正在一个项目,我想计算所有素数。 当我编译(MINGW Windows Comp。)时,程序崩溃并返回一个随机错误号。 这是我写的代码:此时Eratosthenes的筛C++
/*
Sieb des Eratosthenes
*/
#include <iostream>
#include <math.h>
using namespace std;
main()
{
//variablendeklaration
unsigned int nmax=100;
unsigned int i,j,erg;
bool prim[nmax];
//Initialisieren
prim[0]=false;
prim[1]=false;
//array prim[i] erstellen
for(i=2;i<nmax;i++)
{
prim[i]=true;
}
for(i=2;i<nmax;i++) //alle Primzahlen durchlaufen
{
if(prim[i] == true) //auf Prim prüfen
{
for(j=2;j<nmax;j++) //multiplizieren und wegstreichen
{
erg = j * i;
prim[erg] = false;
}
}
}
for(i=2;i<nmax;i++)
{
cout << prim[i] << endl;
}
}
除非你被禁止 - 使用矢量代替 - '矢量素数; –
当您开始使用相当大的数字时(例如> 100万),这个O(n^2)版本的筛子将永远持续下去。 –