Untitled
unknown
plain_text
a year ago
1.6 kB
6
Indexable
#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;
}
Editor is loading...
Leave a Comment