From 52bc203f6aa95341d718d0f8b8c52d4bf5b4e5da Mon Sep 17 00:00:00 2001 From: subcrip Date: Wed, 29 May 2024 19:46:37 +0800 Subject: [PATCH] Add number/factcount.cc Signed-off-by: subcrip --- number/factcount.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 number/factcount.cc diff --git a/number/factcount.cc b/number/factcount.cc new file mode 100644 index 0000000..7bcb69c --- /dev/null +++ b/number/factcount.cc @@ -0,0 +1,25 @@ +pair, vector> factcount(int n) { + vector not_prime(n + 1); + vector res(n + 1), num(n + 1); + vector primes; + res[1] = 1; + for (int i = 2; i <= n; ++i) { + if (not not_prime[i]) { + res[i] = 2; + num[i] = 1; + primes.emplace_back(i); + } + for (auto&& x : primes) { + if (i * x > n) break; + not_prime[i * x] = 1; + if (i % x == 0) { + num[i * x] = num[i] + 1; + res[i * x] = res[i] / num[i * x] * (num[i * x] + 1); + break; + } + num[i * x] = 1; + res[i * x] = res[i] * 2; + } + } + return {primes, res}; +}