我在理解几行代码中的含义时遇到了一些麻烦。我最近开始学习C++,并学习了Bjarne Stroustrup的“编程:使用C++的原理和实践”。在第4章中有一个让我感到困惑的问题,因此我在网上搜索了一个解决方案以供引用。这是我最终与书结合使用的代码:
#include "std_lib_facilities.h"
bool prime(vector<int> store, int number) {
for (int i = 0; i < store.size(); ++i)
if (number%store[i] == 0) return false; //line that I don't understand
return true;
}
int main() {
int max;
cout << "Please enter a maximum number you want checked for being prime or not.\n";
cin >> max;
vector<int> store;
for (int n = 2; n <= max; ++n)
if (prime(store, n)) store.push_back(n);
for (int n = 0; n < store.size(); ++n)
cout << store[n] << "\n";
keep_window_open();
return 0;
}
该代码的目的是找到所有等于2的用户输入以下的质数,从2开始。我理解此代码中发生的所有事情,除了一行(用注释表示)外。 这行上的int“数字”的目的是什么?在数学上这是怎么回事? 令我感到困惑的方面是“数字”没有值,但是它被当前元素的值除。如果等于零,则理论上该语句为假。有人可以向我解释一下吗?查找素数有什么关系?我想了解基本情况,以便成为一名更有效率的程序员并制定自己的解决方案。谢谢。
最佳答案
在prime
的上下文中,到目前为止,store
的质数小于number
。
且仅当number
不能被小于它的任何整数(0和1除外)整除时,它才是质数