c++对于两个数字来说,找出 除了公因数以外的所有因数。现在给出两个数字n和m请你分别输出对n和m求异去同的结果。要求:请先输出n求异去同的结果,再输出m求异去同的结果
时间: 2024-03-18 19:38:36 浏览: 55
C语言程序设计-计算并输出给定整数n的所有因子之和(不包括1与自身);注意:n的值不大于1000.c
5星 · 资源好评率100%
好的,针对你的问题,我给出下面的C++代码:
```c++
#include<bits/stdc++.h>
using namespace std;
vector<int> get_divisors(int n){
vector<int> res;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
res.push_back(i);
if(i!=n/i) res.push_back(n/i);
}
}
sort(res.begin(),res.end());
return res;
}
int main(){
int n,m;
cin>>n>>m;
vector<int> n_divisors=get_divisors(n);
vector<int> m_divisors=get_divisors(m);
vector<int> n_diff,m_diff;
set_difference(n_divisors.begin(),n_divisors.end(),m_divisors.begin(),m_divisors.end(),back_inserter(n_diff));
set_difference(m_divisors.begin(),m_divisors.end(),n_divisors.begin(),n_divisors.end(),back_inserter(m_diff));
for(auto x:n_diff) cout<<x<<" ";
cout<<endl;
for(auto x:m_diff) cout<<x<<" ";
return 0;
}
```
给定两个正整数n和m,我们可以通过实现一个名为“get_divisors”的函数来获取它们的所有因子。对于每个因子,我们将其添加到一个名为“res”的向量中。由于“get_divisors”函数只返回一个数字的因子,因此我们需要调用它两次来获得n和m的因子。我们可以使用STL中的“set_difference”函数来计算n和m的不同因子。最后,我们在循环中输出这些不同的因子。
希望这个代码能够帮助到你!
阅读全文