Q1:因数
在数学中,一个数的因数是能够整除该数的整数。换句话说,如果我们将一个数 a 除以另一个整数 b 而得到整数商,那么 b 就是 a 的因数。以下是一些例子:
1.因数的定义:
如果整数 b 可以被整数 a 整除,那么 b 是 a 的因数。
2.举例:
3.对于数 12,它的因数包括 1、2、3、4、6 和 12,因为它们能够整除 12。
4.对于数 8,它的因数包括 1、2、4 和 8。
5.对于负数 -6,它的因数包括 -1、2、3 和 -6。
6.特殊情况:所有整数都有两个特殊的因数,即 1 和它自身。和负数的因数的定义也是相同的,即能够整除它们的整数。
因数在数学和实际问题中有着重要的应用,例如在分解整数、求最大公约数、解方程等方面。
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cout << "Enter a positive integer: ";
cin >> n;
vector<int> v;
// 因为 n 的因数都是成对出现,所以枚举较小的那个因数
for (int i = 1; i <= n / i; i++) {
if (n % i == 0) {
v.push_back(i);
// 当两个因数不同时,才全部添加
if (i != n / i) v.push_back(n / i);
}
}
cout << "Factors of " << n << " are: ";
for (int factor : v) {
cout << factor << " ";
}
cout << std::endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
bool check(int n) {
//因为不确定n因数的个数, 所以我们可以用不定长数组来存储
vector<int> v;
//因为n 的因数都是成对出现, 所以我们可以枚举较小的那个因数,
//随后 用 n / i表示另一个因数
for (int i = 1; i <= n / i; i++) {
if (n % i == 0) {
v.push_back(i);
//当两个因数不同时,才全部添加
if (i != n / i) v.push_back(n / i);
}
}
//遍历每个因数
if (v.size() < 4) return false;
for (int i = 0; i < v.size(); i++)
for (int j = i + 1; j < v.size(); j++)
for (int l = j + 1; l < v.size(); l++)
for (int r = l + 1; r < v.size(); r++)
if ((v[i] + v[j] + v[l] + v[r]) % n == 0) return true;
return false;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
//使用三元表达式来简化输入输出
// 若函数返回 true 则打印 Yes
// 反之打印 No
cout << (check(x) ? "Yes" : "No");
if (i != n - 1)
cout << endl;
}
}
求 4 个不同正因数之和用四个for循环即可