Untitled
#include <bits/stdc++.h> using namespace std; vector<bool> mark(101, true); vector<int> primes; void sieve() { mark[0] = mark[1] = false; for (int i = 2; i * i <= 100; ++i) { if (mark[i]) { for (int j = i * i; j <= 100; j += i) { mark[j] = false; } } } for (int i = 2; i <= 100; ++i) { if (mark[i]) { primes.push_back(i); } } } vector<int> factors(int n) { vector<int> factor_counts(primes.size(), 0); for (int i = 0; i < primes.size(); ++i) { int prime = primes[i]; int count = 0; for (long long p = prime; p <= n; p *= prime) { count += n / p; } factor_counts[i] = count; } return factor_counts; } void print(int n, const vector<int>& factor_counts) { cout << setw(3) << n << "! ="; int count = 0; for (int i = 0; i < factor_counts.size(); ++i) { if (factor_counts[i] == 0) break; if (count > 0 && count % 15 == 0) { cout << endl; cout << " "; } cout << setw(3) << factor_counts[i]; count++; if (count % 15 != 0 && i<factor_counts.size()-1) { //cout << " "; } } cout << endl; } int main() { sieve(); int n; while (true) { cin >> n; if (n == 0) break; vector<int> factor_counts = factors(n); print(n, factor_counts); } return 0; }
Leave a Comment