繁体   English   中英

如何修复我的程序崩溃?

[英]How to fix my program crashing?

我正在为 projecteuler.net 的第 7 个问题编写代码,我有点成功,但我需要找到第 10001 个质数,如果我尝试找到比 2262 更高的数字,我的程序会崩溃,所以我无法获得回答我需要。 我已经尝试将 int 更改为其他数据类型,例如 long 但这似乎不是问题,我现在被卡住了。 当我试图超越第 2262 个素数时,我需要做什么才能让我的程序不崩溃?

int main()
{
int numbersList[10000], prime[10000], rez;
int where1=1, where=0;
bool remainder;
prime[0] = 2;

for(int i = 2; i < INT_MAX; i++)
{
    numbersList[where] = i;//2
    where++;
    for(int j = 0; j < where1; j++)
    {
        if(i % numbersList[j] != 0)
        {
            remainder = true;
        }
        else
        {
            remainder = false;
            break;
        }
    }
    if(remainder)
    {
        prime[where1] = i;
        where1++;
    }
    if(where1==2262)// Which primary number you want. More or equal to 2263 crashes.
    {
        rez = prime[where1-1];
        break;
    }
}
cout << endl << where1 << " primary number: " << rez << endl;
return 0;
}

我认为它有一个小错字。
模运算将使用prime数组而不是numberList数组来完成

int main()
{
int numbersList[1000000], prime[100000], rez;
int where1=1, where=0;
bool remainder;
prime[0] = 2;

for(int i = 2; i < 1000000; i++)
{
    numbersList[where] = i;//2
    where++;
    remainder = true;
    for(int j = 0; j < where1; j++)
    {
        if(i % prime[j] != 0)
        {
            remainder = true;
        }
        else
        {
            remainder = false;
            break;
        }
    }
    if(remainder)
    {
        prime[where1] = i;
        where1++;
    }
    if(where1==10001)//104743
    {
        rez = prime[where1-1];
        break;
    }
}
cout << endl << where1 << " primary number: " << rez << endl;
return 0;
}

我正在运行第一个 for 循环直到10^6 ,这足以给出第一个10001st素数。 11,000,000数字有78489素数。有关素数的更多详细信息,您可以参考此链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM