如何克服运行时错误信号:25?等效地,浮点错误:核心转储

how to overcome runtime error signal:25? equivalently, floating point error: core dumped?

本文关键字:转储 核心 错误 何克服 克服 信号 运行时错误      更新时间:2023-10-16

所以我做了这个函数来打印区间 L,U 之间的大素数:
1.此功能对于少量数字可以正常运行。
2.当我尝试打印两个大数字之间的素数(例如,100000000和100100000)时,
在 IDEONE.com 上,它说:运行时错误信号:25
在Linux(使用终端)上,它说:浮点异常(核心转储)

在从小数字到大数字的翻译过程中可能出了什么问题?

//primes[] stores all the primes between 2 and sqrt(1000000000)
    void check(long long L,long long U,long long primes[])
    {
        long long g=0,i=0,d;
        if(L==1)
        L++;
        long long v=sqrt(1000000000);
        for(long long k=L;k<U+1;k++)
        {
            i=0;
            d=sqrt(k);
            while(i<=v)     //this statement...
            {
                if(primes[i]<=d)
                {
                    if(k%primes[i]==0)
                    {g=1;break;}
                    ++i;
                }
                else
                break;
            }
            if(g==0)
            {
                cout<<k<<endl;
            }
            g=0;
        }
        return;
    }

编辑:我通过从我的计算中删除素数[](检查注释)中未使用的间隔来解决问题。这可能会使计算次数减少很多(标记的 while 语句中的计算减少了 10 倍)。感谢所有回应的人。

检查签名

double sqrt(double x)

它可以取的最大值是多少。