我正在编写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;
}
答案 0 :(得分: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
素数。从78489
到1
数字有1,000,000
个素数。有关素数的详细信息,请参阅此link