エラトステネス アルゴリズムを実装して素数を計算し、順序付けされた方法で入力するこの単純なコードを作成しました。問題は、1020 より大きい数値では機能しないことです。誰かがこの理由を教えてもらえますか? 実行すると、Eclipse は exe ファイルを起動できず、数値の計算を停止します。ただし、Java で記述された同じコードは、10 億未満の数値でもうまく機能します。
#include <iostream>
#include<math.h>
using namespace std;
int main() {
int N;
cin >> N;
int* a = new int[N];
int i , j, k, cnt = 0;
for(a[1] = 0, i = 2; i <= N; i++) a[i] = 1;
for(i = 2; i <= N/2; i++)
for(j = 2; j <= N/i; j++)
a[i*j] = 0;
for(i = 1; i <= N; i++)
if(a[i]) {
cout<< i ;
int lengthi = (int)floor(log10((float)i));
int lengthN = (int)floor(log10((float)N)) + 1;
for(k = 0; k < lengthN - lengthi + 1; k++)
cout<<' ';
cnt++;
if(cnt%10==0) cout<<'\n';
}
delete [] a;
return 0;
}