题目大意:给定一组数,求能被其中每一个数整除的数的个数,即这组数的公因子个数。
分析:先__gcd()遍历求出这组数的最大公约数,然后对这个最大公约数进行因数分解,其因数个数即为答案。
#include<algorithm>
#include<math.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<map>
#define ll long long
#define INF 0x3f3f3f3f
#define For(i,a,b) for(int i=a;i<b;i++)
#define lm(x) 1<<(x)
using namespace std;
#define N
ll n,x,g,ans;
int main()
{ios::sync_with_stdio(false);
cin>>n;
while(n--){
cin>>x;
g=__gcd(g,x);
}
ll i=1;
for(;i*i<g;i++){
if(g%i==0)
ans+=2;
}if(i*i==g) ans++;
cout<<ans<<endl;
return 0;
}
寻找数列的公因子个数
该博客介绍了一种算法问题,涉及计算一组数的最大公约数及其因数个数。通过__gcd()函数求得最大公约数后,对它进行因数分解,因数的个数即为答案。代码中展示了如何利用C++实现这一过程。
369

被折叠的 条评论
为什么被折叠?



