欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

输入一个正整数n,输出一个最小正整数m,使得m的各位乘积等于n

程序员文章站 2024-02-02 15:03:58
...

/*
1.:编写一个函数func,输入一个正整数n,返回一个最小的正整数m,使得m的各位乘积等于n,例如输入100.输出455,输入36,输出49
*/

#if 0
int func(int n)
{
    int num=0;
    int s;
    int m[10]={0};
    int p=0;//数组m的下标
    int sum=n;
    int i=2;//1~81得用两位数来表示
    int q=9;
    bool flag=false;

    while(sum>9*q)//计算大于81的数应该用几位数字表示  
    {
        i++;  //大于81应该使用3位数来表示
        q*=9;
    }

    int r=i-1;//后面要从数组m的i-1位开始输出,记录下i-1的值

    while(i)//找出满足条件的i位数
    {
        for(int j=9;j>=1&&!flag;j--)
        {
            s=sum;
            if(sum%j==0)
            {
                flag=true;
                m[p++]=j;
                sum/=j;
            }
        }
        if(s==sum&&sum>=10)
        {
            return -1;
        }
        --i;
        flag=false;
    }
    for(;r>=0;r--)
    {
            num = num*10+m[r];
    }

    return num;
}

int main()
{
    int n;
    cout<<"请输入一个正整数n:";
    cin>>n;
    int m = func(n);
    cout<<"最小正整数m各项乘积等于n:"<<m<<endl;

}
#endif