c_cpp 计算数组乘法的除数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 计算数组乘法的除数相关的知识,希望对你有一定的参考价值。
//https://www.geeksforgeeks.org/count-divisors-array-multiplication/
#include <bits/stdc++.h>
using namespace std;
vector <int> findPrimes (int n) {
bool flag[n+1];
memset(flag, 1, sizeof (flag));
for (int i=2;i*i<= n;i++) {
if (flag[i]) {
for (int j=i*2;j<=n;j+= i)
flag[j]= 0;
}
}
vector <int> ans;
for (int i=2;i<=n;i++)
if (flag[i])
ans.push_back(i);
return ans;
}
int func (int a[], int n) {
int maxi= INT_MIN;
for (int i=0;i<n;i++)
if (a[i]> maxi)
maxi= a[i];
vector <int> prime= findPrimes (maxi);
unordered_map<int, int> m;
for (int i=0;i<n;i++) {
for (int j=0;j<prime.size();j++) {
while (a[i]>1 && a[i]%prime[j]== 0) {
a[i]/= prime[j];
m[prime[j]]++;
}
}
if (a[i]!= 1)
m[a[i]]++;
}
int ans= 1;
for (auto it:m) {
ans*= (it.second+1);
}
return ans;
}
int main() {
int n;
cin>>n;
int a[n];
for (int i=0;i<n;i++)
cin>> a[i];
cout<< func (a, n);
}
以上是关于c_cpp 计算数组乘法的除数的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 通过前一个和下一个的乘法替换每个数组元素
LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)
计算机组成与设计—— 除法器
什么具有更好的性能:乘法还是除法?
Leetcode练习(Python):数学类:第29题:两数相除:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法除法和 mo(
c语言如何实现两个整数的乘法运算?