我使用以下代码
尝试了spoj中的素数生成器问题#include<iostream>
using namespace std;
int main()
{
int t,n1,k;
int *x;
cin >> t;
int *m = new int[t];
int *n = new int[t];
for(int i = 0; i < t; ++i)
{
cin >> m[i] >> n[i];
if(i != 0)
if(n[i] > n[i-1])
n1 = n[i];
}
x = new int[n1];
x[2] = 2;
for(int i = 3; i < n1; ++i)
{
if(i%2 == 0)
x[i] = 0;
else
x[i] = i;
}
for(int i = 3; i < n1; ++i)
{
if(x[i] != 0)
{
for(int j = i + i; j < n1; j = j + i)
x[j] = 0;
}
}
for(int i = 0; i < t; ++i)
{
k = n[i];
for(int j = m[i]; j <= k; j++)
{
if(x[j] != 0)
cout << x[j] << endl;
}
cout << endl;
}
return 0;
}
我收到了运行时错误(SIGABRT)。 请帮帮我。我对此很新,所以一点点的善意将不胜感激。提前谢谢!
答案 0 :(得分:1)
问题是protected override void OnStartup(StartupEventArgs e)
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IMailSender, Model.Concrete.GmailSender>();
var mainWindow = container.Resolve<MainWindow>();
Application.Current.MainWindow = mainWindow;
Application.Current.MainWindow.Show();
}
。 x = new int[n1];
可以与n1
一样大,并且您无法声明这么大的数组。您可以使用 Sieve of Eratosthenes 来解决此问题。阅读它http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes