题目描述 给出n个正整数,任取两个数分别作为分子和分母组成最简真分数,编程求共有几个这样的组合。
输入描述:
每组包含n(n<=600)和n个不同的整数,整数大于1且小于等于1000。
输出描述: 每行输出最简真分数组合的个数。
关键是求最大公约数,若分子分母的最大公约数为1,则是最简
#include<bits/stdc++.h>
using namespace std;
#define N 600
**int gcd(int a,int b)//辗转相除法 又名欧几里德算法
{
if(b==0) return a;
else return gcd(b,a%b);
}**
int main()
{
int buf[N];
int count,n;
while(cin>>n)
{
for(int i=0;i<n;i++)
{
cin>>buf[i];
}
count=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j) continue;
else if(buf[i]>buf[j]&&gcd(buf[i],buf[j])==1)
{
count++;
}
}
}
cout<<count<<endl;
}
return 0;
}