题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include <math.h> #include <stdio.h> int main() { int i = 0; int num; scanf("%d", &num); // if ((num < 1) || (num > (2*10E9 + 14))) { // return 1; // } for (i = 2;; i++) { // 1 既不是质数,也不是合数 if (num == 1) { printf("\n"); break; } // 每次进入新的循环时,都是要获取 num 的最小质因数 // 此时的 num 必然不可能被小于 i 的值整除 // 因此最小质因数必然大于等于 i if (i > sqrt(num)) { // 对于合数,最小质因数必然小于本身的算数平方根,因此进入此条件必然不可能是合数 // 对于质数,最小质因数就是它本身 printf("%d\n", num); break; } while (num % i == 0) { printf("%d ", i); num = num/i; } } return 0; }