给出 nn 个正整数,任取两个数,有多少种选法使得选出的两个数互质。
输入格式
第一行是一个正整数 n(n≤600)。
第二行是 n 个整数,相邻两个整数之间用单个空格隔开,整数在 [1,1000] 范围内。
输出格式
一个整数,即互质数组合的个数。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
7
3 5 7 9 11 13 15
样例输出
17
做这题之前我们需要先知道互质数的意义
互质数:互质数指的是两个或多个整数的公因数只有1的非零自然数,公因数只有1的两个非零自然数。
那么如何去判断是否是互质数呢,其实很简单,学过如何判断最大公约数就知道辗转相除法这个东西,如果两数没有最大公约数那么两数的公约数就只有1,所以这道题目的意思就是gcd(a,b)==1。
从题意来看,学过深度优先搜索(以下简称深搜)的一般都会优先想到深搜,但由于这道题的数据较小,我们可以直接使用循环遍历就好了。
代码如下所示:
#include#include using namespace std; int a[601]; int n; int ans=0; int gcd(int x,int y) { if(x%y==0) return y; else return gcd(y,x%y); } int main() { cin>>n; for(int i=0;i >a[i]; for(int i=0;i 由于是第一次发文章,排版方面可能有些问题,请大家见谅。



