1.求两数之间的真素数
#include<iostream>
#include<cmath>
using namespace std;
bool IsPrime(int a) {
bool s = true;
if (a == 1) {
return false;
}
for (int i = 2; i < a / 2; i++) {
if (a % i == 0) {
s = false;
break;
}
}
return s;
}
int GetDigitsNum(int b) {
int c = 1, d = 1, j = 0;
while (c) {
c = b / d;
d *= 10;
j++;
}
return --j;
}
int reverse(int a) {
int m = GetDigitsNum(a), n = 1, s = 0;
int ar[m];
double j = pow(10, m - 1);
for (int i = 0; i < m; i++) {
ar[i] = (a / n) % 10;
s += ar[i] * j;
n *= 10;
j /= 10;
}
return s;
}
int main() {
int n, m, s;
cin >> n >> m;
for (int i = n; i <= m; i++) {
s = IsPrime(i);
if (s == 1) {
if (IsPrime(reverse(i))) {
cout << i << " ";
}
}
}
return 0;
}
2. 求两数的最大公约数和最小公倍数
#include<iostream>
using namespace std;
int GYS_Max(int a, int b) {
int s;
for (int i = 1; i <= a; i++) {
if (a % i == 0 && b % i == 0) {
s = i;
}
}
return s;
}
int GBS_Min(int a,int b){
int s,n;
s=GYS_Max(a,b);
n=s*(a/s)*(b/s);
return n;
}
int main() {
int a, b;
cin >> a >> b;
cout<<GYS_Max(a,b)<<" "<<GBS_Min(a,b);
}