为什么这个循环在第一次迭代时中断? 我学习C++,试图创建一个程序,从1到100迭代,发现所有质数,但基本上它在乘法函数的第一次迭代中停止。
为什么这个循环在第一次迭代时中断? 我学习C++,试图创建一个程序,从1到100迭代,发现所有质数,但基本上它在乘法函数的第一次迭代中停止。,c++,algorithm,vector,C++,Algorithm,Vector,cout 在下列情况下,您将被零除: if( (tmp % check) == 0) 这样考虑: bool isPrime(int n) { if (n == 1 || n == 2) return false; for (int i=2; i <= n/2; i++) if((n % i) == 0) return false; return true; } int main(int argc, ch
cout
在下列情况下,您将被零除:
if( (tmp % check) == 0)
这样考虑:
bool isPrime(int n) {
if (n == 1 || n == 2)
return false;
for (int i=2; i <= n/2; i++)
if((n % i) == 0)
return false;
return true;
}
int main(int argc, char** argv) {
int top = 100;
vector<int> primes;
for(int i = 1; i < top; i++)
if (isPrime(i))
primes.push_back(i);
for(vector<int>::iterator it = primes.begin(); it != primes.end(); ++it)
cout << *it << " - ";
cout << endl;
return 0;
}
for(int i=1;i)调试器是为什么而发明的。顺便说一句,你不能模0。如果((tmp%check)
是因为check
为零,你的程序就在上转储。用你的调试器逐步调试程序,看看会发生什么。@πάνταῥεῖ OP不是索引。他们在迭代数字1到100。@user2079303我只是想指出这一点。我没有说这是循环实际中断的原因(因此是注释)。
Why does this loop break at the first iteration?
if( (tmp % check) == 0)
bool isPrime(int n) {
if (n == 1 || n == 2)
return false;
for (int i=2; i <= n/2; i++)
if((n % i) == 0)
return false;
return true;
}
int main(int argc, char** argv) {
int top = 100;
vector<int> primes;
for(int i = 1; i < top; i++)
if (isPrime(i))
primes.push_back(i);
for(vector<int>::iterator it = primes.begin(); it != primes.end(); ++it)
cout << *it << " - ";
cout << endl;
return 0;
}
3 - 5 - 7 - 11 - 13 - 17 - 19 - 23 - 29 - 31 - 37 - 41 - 43 - 47 - 53 - 59 - 61 - 67 - 71 - 73 - 79 - 83 - 89 - 97 -