次の「prime sieve」のコードは、リリース モードでは機能しませんが、デバッグ モードでは完全に機能します。Microsoft Visual c++ 2010 Express を使用している理由がわかりません。
#include <iostream>
#include <fstream>
#include <cmath>
#include <time.h>
#include <vector>
using namespace std;
void main(){
clock_t start= clock();
int n = 10000000;
bool* primes= new bool[n];
primes[0]=0;
int g = (int)sqrt(n*1.0) +1;
for (int i = 2 ;i <g ; i++){
if(primes[i]){
for (__int64 j = i*i ; j <n ; j+=i)
primes[j]=0;
}
}
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);
int* p = new int[n/2];
int c = 0;
for (int x = 0 ; x<n ; x++)
if (primes[x]){
p[c]=x;
c++;
}
cout<<p[481516]<<endl;
system("pause");
}