# ZeroJudge - d131: 00160 - Factors and Factorials ### 題目連結:https://zerojudge.tw/ShowProblem?problemid=d131 ###### tags: `ZeroJudge` `數學` `質數` ```cpp= #include <iostream> #include <iomanip> using namespace std; #define SIZE 150 int primes[SIZE], primeAmount; bool notPrime[SIZE] = { true, true }; void Initialize() { for (int i = 2; i < SIZE; ++i) { if (!notPrime[i]) primes[primeAmount] = i, ++primeAmount; for (int j = 0; i * primes[j] < SIZE; ++j) { notPrime[i * primes[j]] = true; if (!(i % primes[j])) break; } } } int main(){ cin.sync_with_stdio(false); cin.tie(nullptr); int number, counts, power; Initialize(); while (cin >> number, number) { cout << setw(3) << number << "! ="; for (int i = 0; primes[i] <= number; ++i) { power = primes[i]; counts = 0; while (power <= number) { counts += number / power; power *= primes[i]; } if (i && !(i % 15)) cout << '\n' << setw(6) << ' '; cout << setw(3) << counts; } cout << '\n'; } } ```