spoj中的SIGABRT错误

时间:2015-04-08 17:13:02

标签: sigabrt

我使用以下代码

尝试了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)。 请帮帮我。我对此很新,所以一点点的善意将不胜感激。提前谢谢!

1 个答案:

答案 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