题目描述:
输入格式
第一行是一个正整数 n(n <= 600)。
第二行是 nnn个整数,相邻两个整数之间用单个空格隔开,整数在 [1,1000] 范围内。
输出格式
一个整数,即互质数组合的个数。
输出时每行末尾的多余空格,不影响答案正确性
样例输入 复制
7
3 5 7 9 11 13 15
样例输出 复制
17
思路分析:
第一步:枚举所有的两个数的组合
第二步:通过设计函数求最大公因数
第三步:判断条件是当最大公因数等于1时,ans++
第四步:输出ans
源代码:
#include <iostream>
#include <algorithm>
using namespace std;
int a[605],n,ans=0;
int gcd_1(int a, int b){
return b == 0 ? a:gcd_1(b, a%b);
}
int main(){
cin >> n;
for(int i=0; i < n; i++){
cin >> a[i];
}
for(int i=0; i < n-1; i++){
for(int j=i+1; j < n; j++){
if(gcd_1(a[i],a[j]) == 1)
ans ++;
}
}
cout << ans << endl;
return 0;
}