题目描述
已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
输入一个正整数 n。
输出格式
输出一个正整数 p,即较大的那个质数。
输入输出样例
输入 #1
21
输出 #1
7
说明/提示
1≤n≤2×109
NOIP 2012 普及组 第一题
分析:
这道题问的是质因数中最大的那个是谁。要知道,每一个因数都是有他的另外一半的。
例如:25的因数5的另一半是5,30的因数6的另一半是5。
因为这一道题的数据范围很大,所以如果直接去找他的最大质因数的话,若n的值大一点,就会超时。所以我们可以先找到最小值因数,拿n除以它,得到对大的质因数。
AC代码如下:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 2; i <= n; i++) //质数可以从2开始
{
//判断是否为因数&是否为质数
if (n % i == 0) {
//找到后输出并跳出循环
cout << n / i;
break;
}
}
//好习惯
return 0;
}