题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include <stdio.h>
int main() {
int a;
scanf("%d",&a);
//先找到所有的2
while(a%2==0)
{
printf("%d ",2);
a=a>>1;
}
//找所有奇数,后面质数只可能是奇数
//i*i>a作为结束循环的标志,因为如果i*i>a,则a/i<i
//此时如果i是质因子,那么a/i不会再找到比i大的质因子,比i小的质因子已经找完了
//此时如果i不是质因子,那么a/i不会再找到比i大的质因子,循环应当结束
for(int i=3;i*i<=a;i=i+2)
{
while(a%i==0)
{
printf("%d ",i);
a=a/i;
}
}
//如果循环前一个i为i*i==a,则还要加上一个质因子i
if(a>2){
printf("%d", a);
}
return 0;
}

