题解
2025-08-04 17:04:59
发布于:上海
5阅读
0回复
0点赞
纯暴力
#include<iostream>
#include<vector>
using namespace std;
int gcd(int a,int b){//辗转相除不用多说
if(b==0)return a;
return gcd(b,a%b);
}
int main(){
int n;
vector<int>a;//记录n所有约数
cin>>n;
for(int i=1;i<=n;i++)
if(n%i==0)a.push_back(i);
int ans=0;
for(int i=0;i<a.size();i++)//遍历n所有约数的组合
for(int j=i+1;j<a.size();j++)
ans+=gcd(a[i],a[j]);//ans加上n的约数之间的最大公约数
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个