当我输入一个大于46348的数字运行这个程序时,我得到一个分段错误.对于它下面的任何值,该程序完美地运行.我在Ubuntu 10.04 64位上使用CodeBlocks 8.02.代码如下:
int main()
{
int number = 46348;
vector<bool> sieve(number+1,false);
vector<int> primes;
sieve[0] = true;
sieve[1] = true;
for(int i = 2; i <= number; i++)
{
if(sieve[i]==false)
{
primes.push_back(i);
int temp = i*i;
while(temp <= number)
{
sieve[temp] = true;
temp = temp + i;
}
}
}
for(int i = 0; i < primes.size(); i++)
cout << primes[i] << " ";
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我做了一个程序,返回200万以下所有素数的总和.我真的不知道这个是怎么回事,当得到正确的答案是142913828922时,我得到142891895587作为我的答案.似乎它缺少了几个素数.我很确定getPrime函数可以正常工作.我曾经使用它几次并且工作正常.代码如下:
vector<int> getPrimes(int number);
int main()
{
unsigned long int sum = 0;
vector<int> primes = getPrimes(2000000);
for(int i = 0; i < primes.size(); i++)
{
sum += primes[i];
}
cout << sum;
return 0;
}
vector<int> getPrimes(int number)
{
vector<bool> sieve(number+1,false);
vector<int> primes;
sieve[0] = true;
sieve[1] = true;
for(int i = 2; i <= number; i++)
{
if(sieve[i]==false)
{
primes.push_back(i);
unsigned long int temp = i*i;
while(temp <= number)
{
sieve[temp] = true;
temp = temp + i; …Run Code Online (Sandbox Code Playgroud) 如何将字符转换为整数值?例如,我一直试图将"A"视为1,将"B"视为2,依此类推.我尝试将字符与字母表中的每个字母进行比较并返回适当的值.
int intvalue(char letter)
{
if(letter == "A")
return 1;
else if(letter == "B")
return 2;
else if(letter == "C")
return 3;
else if(letter == "D")
return 4;
else if(letter == "E")
return 5;
else if(letter == "F")
return 6;
else if(letter == "G")
return 7;
else if(letter == "H")
return 8;
else if(letter == "I")
return 9;
else if(letter == "J")
return 10;
else if(letter == "K")
return 11;
else if(letter == "L")
return 12;
else if(letter == "M") …Run Code Online (Sandbox Code Playgroud) 我做了一个程序,返回产品a b c,其中a,b,c是毕达哥拉斯三元组,加起来为1000.程序确实输出了正确的答案但是两次.我很好奇为什么会这样.稍微玩了一下之后,我发现当a = 200 b = 375 c = 425时打印出来.再次当a = 375 b = 200 c = 425时.
bool isPythagTriple(int a, int b, int c);
int main()
{
for(int a = 1; a < 1000; a++)
{
for(int b = 1; b < 1000; b++)
{
for(int c = 1; c < 1000; c++)
{
if( ((a+b+c)==1000) && isPythagTriple(a,b,c) )
{
cout << a*b*c << " ";
break;
}
}
}
}
return 0;
}
bool isPythagTriple(int a, int …Run Code Online (Sandbox Code Playgroud)