题目描述
已知正整数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 }