#include<iostream> #include<string.h> using namespace std; //求每一位总和 int add(int m) { int sum = 0; int bc = 0; int p, q = m; while (q > 0) { p = q % 10; sum += p; q = q / 10; } return sum; } //判断是否为smith bool smith(int m) { int a[10000] = { 0 }; int i = 2; int temp = m; int ac = 0; int sum = 0; while (i <= temp) { if (temp%i == 0) { a[ac] = i; ac++; temp /= i; i = 2; } else i++; } for (int i = 0; a[i]!=0; i++); if (i == 1) return false; else { for (int i = 0; a[i]!=0; i++) { a[i] = add(a[i]); sum += a[i]; } int sum2 = add(m); //cout << "所有因数之和:" << sum << " 所有位数之和:" << sum2 << endl; if (sum == sum2)return true; else return false; } } int main() { int n, i = 0; int a[100] = { 0 }; while (cin >> n && n != 0) { a[i++] = n; } for (int i = 0; a[i] != 0; i++) { int m = a[i] + 1; for (int i =m;; i++) { if (smith(i)) { cout << i << endl; break; } } } return 0; }