两种方法,随便看
2026-10-07 22:46:35
发布于:新疆
1阅读
0回复
0点赞
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std ;
int main(){
int n , m ;
cin >> n >> m ;
vector<int> vault ; //n的公约数
vector<int> imger ; //m的公约数
vector<int> uiop ; //两个的最大公约数
for(int j = 1 ; j <= n ; j++){
if(n%j==0){
vault.push_back(j) ;
}
}
for(int i = 1 ; i <= m ; i++){
if(m%i==0){
imger.push_back(i) ;
}
}
int max = -1 ;
for(int i = 0 ; i < imger.size() ; i++){
for(int j = 0 ; j < vault.size() ; j++){
if(imger[i] == vault[j]){
uiop.push_back(imger[i]) ;
}
}
}
for(int i = 0 ; i < uiop.size() ; i++){
if(max <= uiop[i]){
max = uiop[i] ;
}
}
cout << max ;
return 0 ;
}
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
// 从大到小枚举,找到的第一个公共约数就是最大公约数
for(int i = min(n, m); i >= 1; i--){
if(n % i == 0 && m % i == 0){
cout << i;
return 0; // 找到了直接结束程序
}
}
return 0;
}
这里空空如也







有帮助,赞一个