【题目描述】
已知正整数n
是两个不同的质数的乘积,试求出较大的那个质数。
【输入】
输入只有一行,包含一个正整数 n。
对于60%的数据,6≤n≤1000。
对于100%的数据,6≤n≤2×109。
【输出】
输出只有一行,包含一个正整数 p,即较大的那个质数。
【输入样例】
21
【输出样例】
7
#include<iostream>
using namespace std;
#include<cmath>
bool func(int a)
{
if (a == 2 || a == 3) {
return true;
}
for (int i = 2; i <= sqrt(a) + 1; i++) {
if (a % i == 0) {
return false;
}
}
return true;
}
int main()
{
int n = 0;
cin >> n;
for (int i = 2; i <= sqrt(n) + 1; i++) {
if (func(i)) {
if (n % i == 0) {
cout << n / i;
break;
}
}
}
return 0;
}注意在判断质数的函数,要跳过2,当为2时,循环就会执行到2,然后2%2=0,就导致返回false,会认为2不是质数。