Решите задачу на С++

Для скольких из 22-х заданных цифр 2000, 2001, ..., 2021 существует натуральное число, которое имеет произведение цифр, равной соответствующему заданному числу?

#include <iostream>
#include <string>
#include <ctime>
#include <Windows.h>
using namespace std;

int main()
{   
    unsigned long long int res=1;
    unsigned long long int num=6666;

    

        while(true)
        {
            res = 1;
            string th = to_string(num);

            for (int j = 0; j < th.length(); ++j)
            {
                char a[2] = { th[j],'\0' };
                res *= atoi(a);
            }
            

            for (int i = 2000; i <= 2021; i++)
            {
                if (res == i)
                {
                    cout << "\a" << res << endl;
                    //Sleep(999);
                }
            }
            num++;
            
        }
    
    

    
    
    Sleep(9999999);
}

Ответы (1 шт):

Автор решения: Igor

Разложите каждое число, которое проверяете, на простые множители. Если все простые множители меньше десяти - для этого числа существует.

2000 - 2*2*2*2*5*5*5 - существует
2001 - 3*23*29       - не существует
→ Ссылка