#include <bits/stdc++.h>
using namespace std;
bool prime(int n) {
if (n < 2) {
return false;
} else {
int nn = sqrt(n);
for (int i = 2; i <= nn; i++) {
if (n % i == 0) {
return false;
}
}
}
return true;
}
int main() {
// 数学专题
// 穷举法 求所有公因数
int a, b;
cin >> a >> b;
if (a > b) swap(a, b);
for (int i = 1; i <= a; i++) {
if (a % i == 0 && b % i == 0) {
cout << i << endl;
}
}
// 穷举法 求最大公因数
for (int i = a; i >= 1; i--) {
if (a % i == 0 && b % i == 0) {
cout << i << endl;
break;
}
}
// 辗转相除法 求最大公因数
int a, b, c;
cin >> a >> b;
if (a < b) swap(a, b);
c = a % b;
while (c > 0) {
a = b;
b = c;
c = a % b;
}
cout << b << endl;
// 穷举法 求最小公倍数
int a, b;
cin >> a >> b;
if (a > b) swap(a, b);
for (int i = b; i <= a * b; i++) {
if (i % a == 0 && i % b == 0) {
cout << i << endl;
break;
}
}
// 穷举法优化 求最小公倍数
int a, b;
cin >> a >> b;
if (a > b) swap(a, b);
for (int i = b; i <= a * b; i = i + b) {
if (i % a == 0 && i % b == 0) {
cout << i << endl;
break;
}
}
// 借助最大公约数的终极优化
lcm(a, b) = (a * b) / gcd(a, b);
// 判断质数(素数) (穷举大法)
int n;
cin >> n;
bool isPrime = true;
if (n < 2) {
isPrime = false;
} else {
for (int i = 2; i < n; i++) {
if (n % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
// 判断质数(素数) (优化)
int n;
cin >> n;
bool isPrime = true;
if (n < 2) {
isPrime = false;
} else {
int nn = sqrt(n);
for (int i = 2; i <= nn; i++) {
if (n % i == 0) {
isPrime = false;
break;
}
}
}
if (isPrime) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
// 哥德巴赫猜想:任一大于2的偶数都可写成两个质数之和
int cnt = 0;
for (int n = 4; n <= 1000; n += 2) {
for (int i = 2; i < n - 1; i++) {
if (prime(i) && prime(n - i)) {
cout << n << "=" << i << "+" << n - i << endl;
cnt++;
break;
}
}
}
cout << "cnt = " << cnt << endl;
return 0;
}