【题目链接】
ybt 1098:质因数分解
ybt 1957:【12NOIP普及组】质因数分解
OpenJudge NOI 1.5 43:质因数分解
洛谷 P1075 [NOIP2012 普及组] 质因数分解
【题目考点】
1. 质数、因数
【解题思路】
题目中给的数字n是两个质数的乘积,n的范围最大能达到
2
9
2^9
29
除非二者相等,其它情况下,都是一个较小的质数乘以一个较大的质数。其中较小的质数一定小于等于
n
\sqrt{n}
n。
显然,搜索较小的质因数更容易。
因为数字n是两个质数的乘积,因而数字n只能整除这两个质数。
循环变量i从2开始不断增大,判断n是否能被i整除(i是否是n的因数),如果是,那么i就是n的两个质因数中较小的质因数。那么较大的质因数就是n / i。
【题解代码】
解法1:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i = 2; i <= sqrt(n); ++i)
{
if(n%i == 0)//第一个找到的n的因数i,一定是n的两个质因数中较小的质因数
{
cout << n/i << endl;//n / i就是n的两个质因数中较大的质因数
return 0;
}
}
return 0;
}