67 lines
1004 B
C++
67 lines
1004 B
C++
#include <bits/stdc++.h>
|
|
|
|
using namespace std;
|
|
|
|
const int maxc = 50000;
|
|
char check[maxc + 1];
|
|
vector<int> prime;
|
|
|
|
void sieve() {
|
|
for (int i = 0; i < maxc; i++)
|
|
check[i] = 1;
|
|
check[0] = 0;
|
|
check[1] = 0;
|
|
|
|
for (int i = 2; i * i < maxc; i++)
|
|
if (check[i])
|
|
for (int j = i * i; j < maxc; j += i)
|
|
check[j] = 0;
|
|
for (int i = 2; i < maxc; i++) {
|
|
if (check[i])
|
|
prime.push_back(i);
|
|
}
|
|
}
|
|
|
|
int is_db(int n) {
|
|
int m = n;
|
|
|
|
vector<int> factor;
|
|
for (int i = 0; i < prime.size() && prime[i]*prime[i]<=n;i++) {
|
|
while (n % prime[i] == 0) {
|
|
factor.push_back(prime[i]);
|
|
n /= prime[i];
|
|
}
|
|
}
|
|
factor.push_back(n);
|
|
|
|
int facsum = 0;
|
|
for (auto i : factor) {
|
|
while (i) {
|
|
facsum += i % 10;
|
|
i /= 10;
|
|
}
|
|
}
|
|
|
|
int sum = 0;
|
|
while (m) {
|
|
sum += m % 10;
|
|
m /= 10;
|
|
}
|
|
if (sum == facsum) {
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
int main() {
|
|
int n;
|
|
cin >> n;
|
|
n++;
|
|
sieve();
|
|
|
|
while (!is_db(n)) {
|
|
n++;
|
|
}
|
|
cout << n << "\n";
|
|
}
|