是一个数字可以被数组中的任何数字整除

时间:2017-02-22 18:38:43

标签: c++

我正在尝试查看数字是否可以被数组中的任何给定数字整除。  我已经看到了很多关于number1%number2 == 0的答案,但是我没有找到任何数字数组,我宁愿不自己写出阵列中的每个数字(这样做会很难)。

所以这就是我想弄清楚的。正如您所看到的,目前唯一有效的方法是,如果我给它的最后一个数字为真,否则else语句会启动并将number1_result计算为false。

int square_numbers[10] = { 4, 9, 25, 36, 49, 64, 81, 100, 121, 144 };
int number1;    
bool number1_result;

cin >> number1; 

for (int i = 0; i < 10; i++) {
    if(number1 % square_numbers[i] == 0)
        number1_result = true; 
    else
        number1_result = false;
}

如何确保循环曾经评估为真一次,这是真的。如果它至少不是一次,那就错了。

如果您需要更多信息,请告诉我们,谢谢!

2 个答案:

答案 0 :(得分:2)

使用std

bool number1_result = std::any_of(std::begin(square_numbers),
                                  std::end(square_numbers),
                                  [&](auto e){ return number % e == 0; });

答案 1 :(得分:0)

问题是你要分配number1_result哪个应该检查循环内部,而是你必须输入number1

cin >> number1_result; // redundant

答案:

int square_numbers[10] = { 4, 9, 25, 36, 49, 64, 81, 100, 121, 144 };
bool number1_result = false;

int number1;
cin >> number1;  

for (int i = 0; i < 10; i++) {
    if(number1 % square_numbers[i] == 0){
        number1_result = true;
        break;
    }
}