已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。n ≤ 2×109 。
如果我们通过寻找较大的质数,肯定是会超时的。比如 n = 2×998244353,那么就要找到 998244353,评测机一秒肯定跑不了那么多次。
但是,注意 n 是两个不同质数的乘积,因此我们可以通过寻找 n 较小的约数,然后用 n 除以那个约数,就能得到答案。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=2;i*i<=n;i++){
if(n%i==0){cout<<n/i<<endl;return 0;} //可以证明程序必然结束
}
}
这样我们就能成功通过一道橙题。