[英]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
素数。 从1
到1,000,000
数字有78489
素数。有关素数的更多详细信息,您可以参考此链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.