当前位置:   article > 正文

[NOIP2012 普及组] 质因数分解

[noip2012 普及组] 质因数分解

[NOIP2012 普及组] 质因数分解

题目描述

已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。

输入格式

输入一个正整数 n。

输出格式

输出一个正整数 p,即较大的那个质数。

样例 #1

样例输入 #1

21

样例输出 #1

7

首先需要写一个函数是否是素数

  1. bool isP(int num)
  2. {
  3. bool flag = true;
  4. for (int i = 2; i <= sqrt(num); i++)
  5. {
  6. if (num % i == 0)
  7. {
  8. flag = false;
  9. break;
  10. }
  11. }
  12. return flag;
  13. }

然后我们只需要遍历小于的整数,看其是否是n的素因数

注意:当我们遍历小于的整数时,也对应遍历了大于小于n的整数

完整代码如下

  1. #include<iostream>
  2. #include<cmath>
  3. using namespace std;
  4. bool isP(int num)
  5. {
  6. bool flag = true;
  7. for (int i = 2; i <= sqrt(num); i++)
  8. {
  9. if (num % i == 0)
  10. {
  11. flag = false;
  12. break;
  13. }
  14. }
  15. return flag;
  16. }
  17. int main()
  18. {
  19. int n;
  20. cin >> n;
  21. int max = 1;
  22. for (int i = 2; i <= sqrt(n); i++)
  23. {
  24. if (n % i == 0 && isP(i))
  25. {
  26. max = max > i ? max : i;
  27. if (isP(n / i))
  28. {
  29. max = max > n / i ? max : n / i;
  30. }
  31. }
  32. }
  33. cout << max;
  34. return 0;
  35. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/302627
推荐阅读
相关标签
  

闽ICP备14008679号