题目地址:
https://www.luogu.com.cn/problem/P1075
题目描述:
已知正整数
n
n
n是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式:
一个正整数
n
n
n。
输出格式:
一个正整数
p
p
p,即较大的那个质数。
数据范围:
n
≤
2
×
1
0
9
n\le 2\times 10^9
n≤2×109
将 i i i从 2 2 2枚举到 n \sqrt n n,如果发现 i ∣ n i|n i∣n说明 i i i是 n n n的两个质因子较小的那个,从而输出 n / i n/i n/i即可。代码如下:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 2; i <= n / i; i++)
if (n % i == 0) {
printf("%d\n", n / i);
break;
}
}
时间复杂度 O ( n ) O(\sqrt n) O(n),空间 O ( 1 ) O(1) O(1)。