题目描述
已知正整数n是两个不同的质数的乘积,试求出较大的那个质数。
输入描述:
输入只有一行,包含一个正整数n。
输出描述:
输出只有一行,包含一个正整数p,即较大的那个质数。
备注:
对于60%的数据,6≤n≤1000。
对于100%的数据,6≤n≤2*10^9。
解析:
说实话,看到这个题目是不是就觉得得分别判断这两歌树是不是质数。一开始我就想先暴力找到一个能被n整除的较小的质数,然后用n/min不就行了吗,可是后来一想,不对呀,不能保证大的数也是质数呀,于是,我就看了看数据,还是硬着头皮将这个想法敲上了,一提交竟然对了???黑人问号???可是后来一想,给出的这个数肯定能分解成两个质因数,而像24,100这样的数,肯定就不在考虑范围了。
1 #include <iostream>
2 #include <cstdio>
3 #include <algorithm>
4 #include <string>
5 #include <cstring>
6 #include <cstdlib>
7 #include <cmath>
8 #include <stack>
9 #include <queue>
10 #include <set>
11 #include <map>
12 #include <vector>
13 #include <ctime>
14 #include <cctype>
15 #include <bitset>
16 #include <utility>
17 #include <sstream>
18 #include <complex>
19 #include <iomanip>
20 #define inf 0x3f3f3f3f
21 typedef long long ll;
22 using namespace std;
23 ll n;
24 int main()
25 {
26 cin>>n;
27 for(int i=2; i<=n/2; i++)
28 {
29 if(n%i==0)
30 {
31 cout<<n/i<<endl;
32 break;
33 }
34 }
35 return 0;
36 }