题目描述
给你一个正整数n,保证有2个质数因子,请输出较大的质数因子。
输入输出格式
输入是stdin:给定n
输出是stdout:输出较大质因子
样例输入输出
示范#1
15 | 5 |
注解:
15有3和5两个质因子,较大的就是了。
数据范围(注意看!)
对于···数据 | 数据满足 |
![]() | ![]() |
![]() | |
![]() | ![]() |
题解:
注意数据范围为10^12!最愚蠢的方法是:
1.分解质因数 错
2.从大往小试 有风险
因为
的平方根是
,我们都知道1~10^6肯定比10^6~10^12要小,所以用最优方案。在1~sqrt(n)里枚举,如果其中数x能整除那么答案一定是n/x
最优方案:从小往大试。
为什么是平方根?
用15举例,平方根就像1条小河,他的平方根取整为3,15/3=5,只要一个数小于平方根,另一个数就一定大于平方根。
这里有1个参考程序,转载请注明出处:
#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;
return 0;
}
}
return 0;
}
有意见及时提出,谢谢!
----------------------------------------------------------------------------------------------------------------------------
qq:请点击http://512655189@qq.com给你几个网站来刷题:
noi.openjudge.cn
www.jzoj.cn
www.luogu.com.cn
atcoder.jp
www.codeforces.com
usaco.org
51nod.com
最后附上我的游戏:打开看看!