[NOIP2012 普及组] 质因数分解
题目描述
已知正整数 n n n 是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
输入一个正整数 n n n。
输出格式
输出一个正整数 p p p,即较大的那个质数。
样例 #1
样例输入 #1
21
样例输出 #1
7
提示
1 ≤ n ≤ 2 × 1 0 9 1 \le n\le 2\times 10^9 1≤n≤2×109
题目来源
NOIP 2012 普及组 第一题(洛谷)
题解
#include <cstdio>
int main() {
int n;
// 读取输入的整数 n
scanf("%d", &n);
// 从 2 开始尝试寻找 n 的质因数
for (int i = 2; i * i <= n; ++i) {
// 如果 i 是 n 的因数
if (n % i == 0) {
// n/i 一定是另一个质因数,且大于等于 i
printf("%d", n / i);
return 0;
}
}
// 如果没有找到,则 n 本身就是一个质数,且只能由 1 和 n 组成
// 根据题意,n 必然由两个不同的质数组成,程序不应执行到这里。
return 0;
}