程序产生的奇怪输出

Boo*_*ooB 1 c++ visual-c++

我认为我的代码有效.但是,它输出01111E5或17B879DD,或类似的东西.

有人可以告诉我为什么.

我知道我设置了P的限制而不是10,001.我的代码是这样的,因为我从3开始,跳过素数2.

#include <iostream>
bool prime (int i)
{
bool result = true;
int isitprime = i;
for(int j = 2; j < isitprime; j++)              ///prime number tester
{
    if(isitprime%j == 0) result = false;
}   
return result;
}


int main (void)
{
using namespace std;
int PrimeNumbers = 1;
int x = 0;
for (int i = 3 ; PrimeNumbers <=10000; i++)
{
    if(prime(i))
    {
        int prime = i;
        PrimeNumbers +=1;
    }
}   
cout<<prime<<endl;
system ("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 7

cout<<prime<<endl;
Run Code Online (Sandbox Code Playgroud)

打印函数的地址bool prime (int i),而不是您声明的变量.只需重命名函数或变量(请注意,您还必须更改其范围,或者移动cout循环内部 - 如果您想要全部打印它们):

for (int i = 3 ; PrimeNumbers <=10000; i++)
{
    if(prime(i))
    {
        cout << i << endl;
        PrimeNumbers++;
    }
}  
Run Code Online (Sandbox Code Playgroud)

也:

for(int j = 2; j < isitprime; j++)              ///prime number tester
{
    if(isitprime%j == 0) result = false;
}   
Run Code Online (Sandbox Code Playgroud)

可以优化,因为(1)你不需要检查,直至所有的数字isitprime,但顶多sqrt(isitprimt)和(2)您只需要检查到resultfalse,在这一点,你可以break退出循环.