题解 | #质数因子#
质数因子
https://www.nowcoder.com/practice/196534628ca6490ebce2e336b47b3607
#include <stdio.h> #include <math.h> int bprim(int f) { int i; if (f == 2) return 0; for (i = 2; i <= sqrt(f); i++) if (f % i == 0) return 1; return 0; } int main() { unsigned long n; int i = 2; scanf("%lu", &n); double dd = sqrt(n * 1.0); int pmax = (int)sqrt(n * 1.0); while (n > 1) { if (!bprim(i)) { while ( n >= i) { if (n % i == 0) { printf("%d ", i); n = n / i; } else break; } } i++; if (i > pmax) { if (n > pmax ) printf("%lu", n); break; } } return 0; }