素数(SIGSEGV)

时间:2015-08-15 14:39:35

标签: c++ primes sigabrt sigsegv

  • 这是SPOJ上一个非常着名的问题,你需要找到给定范围内的素数,所以事物的范围是1到1000000000.但每次我分配一个1000000000大小的数组时它会给我一个sigsegv错误或sigabrt错误如何克服将非常大的值分配给数组的问题
  • 除了我使用ertosthenes算法的筛子来解决问题。我已经给出了下面的代码,请告诉我我的代码中需要更改的内容,以帮助我解决问题所以我不会#39 ;得到一个sigsegv和sigabrt错误。

    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    int main()
    {
        int t,j;
        long long int x,y;
        cin>>t;
        int i=0;
        while(i<t)
        {
            cin>>x>>y;
            long long int *a=new long long int[y];
            for(int k=0;k<=y;k++)
                a[k]=1;
                a[0]=0;
                a[1]=0;
            for(int k=2;k<=y;k++)
            {
                if(a[k]==1)
                {
                for(j=2;k*j<=y;j++)
                        a[k*j]=0;
                }
            }
            for(int k=x;k<=y;k++)
            {
             if(a[k]==1)
                    cout<<k;
            }
            delete []a;
            i++;
        }
        return 0;
    }
    

0 个答案:

没有答案