我在理解几行代码中的含义时遇到了一些麻烦。我最近开始学习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除外)整除时,它才是质数

10-06 03:02