首页 > 试题广场 >

分解质因数

[编程题]分解质因数
  • 热度指数:251 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个正整数 n ,请将 n 按从小到大的顺序分解为若干个质因数并输出。输出的质因数乘积必须恰好等于 n

\hspace{15pt}【名词解释】
\hspace{23pt}\bullet\, 质因数:若正整数 p 仅能被 1 与自身整除,则称 p质数;若质数 p 能整除 n ,则称 pn质因数

输入描述:
\hspace{15pt}在一行上输入一个整数 n\left(2 \leqq n \leqq 10^{12}\right) ,代表需要进行分解的数。


输出描述:
\hspace{15pt}在一行上输出若干个整数,表示按照从小到大顺序排列的 n 的所有质因数。若某个质因数在分解中出现多次,则需重复输出对应的次数。相邻两个整数之间以单个空格分隔,行尾不得有多余空格。
示例1

输入

18

输出

2 3 3

说明

18=2\times3\times3
示例2

输入

60

输出

2 2 3 5

说明

60=2\times2\times3\times5
头像 convie
发表于 2025-07-08 14:36:57
#include<iostream> #include<algorithm> #include<cstring> #include<unordered_map> using namespace std; #define int long long #d 展开全文
头像 牛客60200594号
发表于 2025-07-07 08:53:56
#include <stdio.h> int main() { long long n; scanf("%lld", &n); // 处理质因数2 while (n % 2 == 0) { printf 展开全文
头像 Silencer76
发表于 2025-07-08 18:23:20
题目链接 HIGH4 分解质因数 题目描述 输入一个正整数 n,请对它进行质因数分解,并从小到大输出它的所有质因子,两个因子之间用空格隔开。如果一个质因子出现了多次,则需要重复输出。 解题思路 这是一个经典的质因数分解问题。核心思想是使用试除法,不断地用最小的质数去除给定的数 n,直到 n 变为 1 展开全文