题解 | #质数因子#
质数因子
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; }