HJ6题解 | #质数因子#(得懂概念)
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long num, temp;//int上下三万不够,要用long
cin>>num;
temp = num;
if(num == 1)//正整数还有1
{
cout<<1;
return 0;
}
for(long i=2; i<=sqrt(temp); i++)//一个数的质因数(除了最大的那个)不会超过它的算术平方根
{
while(num % i == 0)
//求余为0,说明还有这个质因子
//为什么4不会呢,因为4是合数,2、2已经被我们去了,所以从2往上找即可
{
cout<<i<<" ";
num /= i;
}
}
//如果找到算术平方根还没有能整除的就直接输出(本身就是质数)
if(num != 1)//还没有被除过,或者除过剩下的最大质因子直接输出
{
cout<<num;
}
}
//所有的合数都是由质数相乘得到的,只要一个数把质因数全部除掉,它就不会有合因数了。
HJ6,还是得懂得质数因子的求法。
查看20道真题和解析