题目描述
已知正整数 �n 是两个不同的质数的乘积,试求出较大的那个质数。
输入格式
输入只有一行,包含一个正整数 �n(6<�<1096<n<109)。
输出格式
输出只有一行,包含一个正整数 �p,即较大的那个质数。
输入输出样例
输入 #1复制
21
输出 #1复制
7
我们枚举 11 ~ �n,显然能整除 �n 的只能是 �1p1 或者 �2p2。
因为有 ��1=�2p1n=p2,显然我们只需要找到 �1p1 再输出 ��1p1n 即可,因为这样节约时间。
那么时间复杂度的上界即为 �((�))O((n))。
因为 �1p1 可能的最大值为 (�)(n)。
能通过此题。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,i,maxn=0;
cin>>n;
for(i=2;i<=n;i++){
while(n%i==0){
n/=i;
if(i>maxn) maxn=i;
}
}
cout<<maxn;
return 0;
}
拜拜!