可被数组中的任何数字整除的数字

Is a number divisible by any number in array

本文关键字:数字 任何 数组      更新时间:2023-10-16

我正在尝试查看一个数字是否可以被数组中的任何给定数字整除。 我已经看到很多带有数字1 % 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;
}

如何确保如果循环的计算结果为 true 一次,则为真。如果至少一次不为真,则为假。

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

一旦找到除数,就打破循环。并使用=而不是==进行分配。
正确的解决方案是——

int square_numbers[10] = { 4, 9, 25, 36, 49, 64, 81, 100, 121, 144 };
bool number1_result=false;
for (int i = 0; i < 10; i++) {
if(number1 % square_numbers[i] == 0) {
number1_result = true;
break;
} 
}

你的代码的问题在于它会覆盖number_result即使它已经是真的。

考虑示例,number1=4square_number={2, 3}
在您的循环中,num_result在第一次比较时会变得true,但在下次与3比较时会再次变得false

withstd

bool number1_result = std::any_of(std::begin(square_numbers),
std::end(square_numbers),
[&](auto e){ return number % e == 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;
}
}
相关文章: