43:质因数分解
总时间限制: 1000ms 内存限制: 65536kB
描述
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
输入
输入只有一行,包含一个正整数 n。
对于60%的数据,6 ≤ n ≤ 1000。
对于100%的数据,6 ≤ n ≤ 2*10^9。
输出
输出只有一行,包含一个正整数 p,即较大的那个质数。
样例输入
21
样例输出
7
解析
已知未知数n由两个不同的质数相乘得来,而且要求出最大的质数,我们不知未知数n有多大,但最小的质数是2,我们可得出一条式子:n=最小质数*最大质数,所以我们在2~sqrt(n)范围内遍历找质数(从最小开始),然后用n%该数是否得0,若为0,则n/该数的结果即所求的数。
#include<bits/stdc++.h>
using namespace std;
int fun(int x)
{
if(x==2)
{
return x;
}
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)
{
return 0;
}
}
return x;
}
int main()
{
int n;
cin >> n;
for(int i=2;i<=sqrt(n);i++)
{
if(fun(i)>0)
{
if(n%i==0)
{
cout << n/i;
}
}
}
return 0;
}