求问C++输出100以内质数的代码的问题

#include <iostream>
#include <iomanip>
using std::cout;
using std::cin;
using std::setw;
using std::endl;

int main()
{
const int MAX = 100;
long primes[MAX] = {2,3,5};
long trial = 5;
int count = 5;
bool found = false;

do
{
trial += 2;
found = false;

for(int i ; i < count ; i++ )
{
found = (trial%*(primes + i) == 0);
if(found)
break;
}
if(!found)
*(primes + count++) = trial;
}while(count < MAX);

for(int i = 0; i < MAX; i++ )
{
if(i % 5 == 0)
cout<< endl;
cout<<setw(10)<<*(primes + i);
}
cout << endl;

return 0;
}
编译的时候并没有报错···,只是执行的时候直接停止运行···这是怎么回事·····初始化的事情我之前已经发现了,,初始化之后还是不行··

开始一个问题是在第一个for循环里面你只定义了i,没有给他复制,应该是int i=0;
然后是你开始写了这句话:long primes[MAX] = {2,3,5};,所以死primes[]整个数组,除了primes[0]primes[1]primes[2],其他的都是0,然后在循环第4次的时候就变成了trial%0,所以就报错了。
我再看看还有没有。。- -!
好了,没有了,你把for(int i ; i < count ; i++ )改成for(int i ; i < count &&*(primes + i)!=0; i++ )就可以输出了,然后会出现第一排后面两个是0,然后把count=5改成count=3就行了。如果是故意这么做的话就不用管他
额。。。我说的报错不是编译器报错,是在运行的时候出现了一些问题,比如内存操作错误,或者除数为0等情况,然后系统报错
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-12
for(int i ; i < count ; i++ ) 这句i没初始化呀
第2个回答  2013-08-12
这个编程题目网上一大堆,找错误要耐心,没时间帮你找,下班了,你慢慢看吧
相似回答