赞
踩
已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入一个正整数 n。
输出一个正整数 p,即较大的那个质数。
21
7
首先需要写一个函数是否是素数
- bool isP(int num)
- {
- bool flag = true;
- for (int i = 2; i <= sqrt(num); i++)
- {
- if (num % i == 0)
- {
- flag = false;
- break;
- }
- }
- return flag;
- }
然后我们只需要遍历小于的整数,看其是否是n的素因数
注意:当我们遍历小于的整数时,也对应遍历了大于小于n的整数
完整代码如下
- #include<iostream>
- #include<cmath>
- using namespace std;
- bool isP(int num)
- {
- bool flag = true;
- for (int i = 2; i <= sqrt(num); i++)
- {
- if (num % i == 0)
- {
- flag = false;
- break;
- }
- }
- return flag;
- }
- int main()
- {
- int n;
- cin >> n;
- int max = 1;
- for (int i = 2; i <= sqrt(n); i++)
- {
- if (n % i == 0 && isP(i))
- {
- max = max > i ? max : i;
- if (isP(n / i))
- {
- max = max > n / i ? max : n / i;
- }
- }
- }
- cout << max;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。