题目描述
将一个正整数分解质因数,例如,输入90,输出2 3 3 5。
输入描述
输入一个正整数n(2<=n<=2000)。
输出描述
从小到大输出n的所有质因子,每两个数之间空一格。
输入样例
20
输出样例
#include <iostream>
int main() {
int n;
std::cout << "Enter a positive integer: ";
std::cin >> n;
std::cout << "Prime factorization of " << n << ": ";
for (int i = 2; i <= n; ++i) {
while (n % i == 0) {
std::cout << i << " ";
n /= i;
}
}
std::cout << std::endl;
return 0;
}
在这个程序中,n /= i
是用来检查 n
是否能够被当前的数 i
整除。具体地说,它的作用是:
- 当
n
能够被i
整除时,说明i
是n
的一个质因数。 - 然后,通过执行
n /= i
将n
的值除以i
,缩小问题规模。 - 循环继续检查新的
n
是否能够被i
整除,直到无法整除为止。
通过这个过程,我们能够找到 n
的所有质因数,并且在输出时按照从小到大的顺序输出。这是一种常见的分解质因数的方法。
让我们通过一个例子来说明:
假设 n
的初始值是 90,我们开始循环:
- 当
i
是 2 时,90 / 2
可以整除,于是输出 2,然后更新n
为 45。 - 当
i
是 3 时,45 / 3
可以整除,于是输出 3,然后更新n
为 15。 - 当
i
是 3 时,15 / 3
可以整除,于是输出 3,然后更新n
为 5。 - 当
i
是 5 时,5 / 5
可以整除,于是输出 5,然后更新n
为 1。 - 当
i
是 1 时,1 / 1
可以整除,但不输出 1,因为 1 不是质数。
最终的输出是 2 3 3 5。