题目描述
已知正整数 n 是两个不同的质数的乘积,试求出两者中较大的那个质数。
输入格式
输入一个正整数 n。
输出格式
输出一个正整数 p,即较大的那个质数。
输入输出样例
输入 #1
21
输出 #1
7
说明/提示
1≤n≤2×109
NOIP 2012 普及组 第一题
思路
大多数人首先想到的就是for循环从(n - 1)一直枚举下去
但大家应该知道,约数是成对出现的(平方数除外),也就是说,一个数的第一小约数乘第一大约数相乘等于这个数,第二小约数乘第二大约数相乘也依然等于这个数!
因此,只要找出n的最小约数(1除外),再用n除以这个数,就能得到结果了!
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
for (int i=2;i<=n;i++)
{
if (n%i==0)
{
cout <<n/i;
break;
}
}
return 0;
}
如有错误,欢迎大家评论区指出!感谢!