题目描述
已知正整数nn是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
一个正整数nn。
输出格式
一个正整数pp,即较大的那个质数。
输入输出样例
输入 #1复制
21
输出 #1复制
7
标答
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int i, j, k,h,flag=1;
for (k=2; k <=sqrt(n); k++)
{
if (n %k==0)
{
for (h = 3; h <= sqrt(k); h += 2)
{
if (k % h == 0)
{
flag = 0;
break;
}
}
if (flag)
{
cout << n/k;
return 0;
}
}
flag = 1;
}
return 0;
}
其他方法(会超时)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n;
cin >> n;
int num[100000];
int i, j = 1;
num[0] = 2;
for (i = 3; i < n; i+=2)
{
int flag = 1;
for (int k = 3; k <= sqrt(i); k+=2)
{
if (i % k == 0)
flag = 0;
}
if (flag)
{
num[j] = i;
j++;
}
flag = 1;
}
for (i = j; i >= 0; i--)
{
for (int k = 0; k <= i; k++)
{
if (n == num[i] * num[k])
{
cout << num[i];
return 0;
}
else if (n < num[i] * num[k])
break;
}
}
return 0;
}