/*
本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。
欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。
我是一名有诗人气质的网络安全工程师
期待与你的思想交流碰撞出智慧的花火
水木清华
2020-03-12
质数因子
*/
#include<iostream>
using namespace std;
//求解质因子的接口
string getResult(long ulDataInput)
{
    string str; //初始化一个字符串,用于存储质因子及输出求解结果
    //直到整数或更新后的整数为 1(如 1 = 7 / 7) 时,结束循环体
    while (ulDataInput != 1)
    {
        //从第一个质数 2 开始判断,如果 2 不满足,那么后面的因子只可能为奇数,且为奇素数
        //若输入的整数本身就是素数,那么直接输出该整数,但需要通过for循环来判断它是否为素数
        for (int i = 2; i <= ulDataInput; i++)
        {
            if (ulDataInput % i == 0)
            {
                ulDataInput /= i; //更新整数,如 1 = 7 / 7,则结束 while 循环
                string s = to_string(i); //将整数转换为字符串
                str = str + s + ' '; //将整数字符串和空格添加到 str 的末尾
                break;
            }
        }
    }
    return str; //返回结果
}
//主函数
int main()
{
    long num;
    while(cin >> num)
    {
        cout << getResult(num) << endl;
    }
    return 0;
}