Skip to content

14039: 【原4039】质因数分解

题目

题目描述

author: 程序设计思想与方法助教组 Hao Xiong 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4039

问题描述

编写一个程序,先读入一个正整数 N,对其做质因数分解。

例如:

90 = 2 * 3 * 3 * 5

输入输出描述

输入

  • 输入一个正整数 N(2<=N<=65535)

输出

  • 分解得到的所有质因数,从小到大排列,以空格分隔,最后一个因数后无空格。
  • 如果N本身为质数,则输出N本身。

程序运行示例1

Sample Input 1

2

Sample Output 1

2

程序运行示例2

Sample Input 2

90

Sample Output 2

2 3 3 5

程序运行示例3

Sample Input 3

1024

Sample Output 3

2 2 2 2 2 2 2 2 2 2

ligongzzz's solution

#include "iostream"
using namespace std;

int main() {
    int input;
    cin >> input;

    for (int i = 2;i<=input; i++) {
        while (1) {
            //不断地除
            if (input == i) {
                cout << i;
                break;
            }
            else if (input%i == 0) {
                input /= i;
                cout << i << " ";
            }
            else
                break;
        }
    }
    return 0;
}

victrid's solution

#include <iostream>
using namespace std;
int main()
{
    int num;
    bool CF=false;
    cin >> num;
    for (int i = 2; i <= num;)
    {
        if (!(num % i))
        {
            num /= i;
            if (CF) cout << ' ';
            cout << i;
            CF = true;
            continue;
        }
        ++i;
    }
    return 0;
}