若一个合数的质因数分解式逐为位相加之和等于其本身逐位相加之和,则称这个数为smith数。如4937775=3×5×5×65837,而3+5+5+6+5+8+3+7=42,4+9+3+7+7+7+5=42,所以4937775是smith数,求给定一个正整数N,求大于N的最小smith数。
输入:若干个case,每个case一行代表正整数N,输入0表示结束
输出:大于N的最小smith数
#include <iostream>
using namespace std;
void getnumber(int number,int *arr,int &n)
{
//cout << endl << "数" << number << "分解为 :";
int i;
for ( i = 0; number != 0; i++)
{
arr[i] = number % 10;
number /= 10;
//cout << endl<<"jjj"<<arr[i]<<endl;
}
for (int j = 0; j < i / 2; j++)
{
int temp = arr[j];
arr[j] = arr[i -1 - j