【2012NOIP普及组】T1. 质因数分解 试题解析
时间限制: 1000 ms 内存限制: 131072 KB
【题目描述】
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
【输入】
输入只有一行,包含一个正整数 n。
【输出】
输出只有一行,包含一个正整数 p,即较大的那个质数。
【输入样例】
21
【输出样例】
7
【提示】
【数据范围】
对于 60%的数据,6 ≤ n ≤ 1000。
对于 100%的数据,6 ≤ n ≤ 2*10^9。
试题解析:比较基础的一道题,找到n除以n的最小质因子即可
1. #include <iostream> 2. #include <cstdio> 3. #include <cmath> 4. using namespace std; 5. bool zhn(int a) 6. { 7. if(a<2) return false; 8. int i; 9. for(i=2;i<=sqrt(a);i++) 10. if(a%i==0) break; 11. if(i>sqrt(a)) return true; 12. else return false; 13. } 14. int main() 15. { 16. int n; 17. scanf("%d",&n); 18. for(int j=2;j<=n;j++){ 19. if(n%j==0&&zhn(j)&&zhn(n/j)){ 20. printf("%d",n/j); 21. break; 22. } 23. } 24. return 0; 25. }