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语言如何实现两个整数的乘法运算?