终止条件很怪,没给,是scanf返回值为EOF的时候。
GCD算法:
最后b为0时返回a即可。
a | b |
b | a%b |
... | ... |
a | 0 |
a为1,最大公因数为1,互质;否则不互质。
#include<cstdio> int a[600]; // a>b int gcd(int a, int b){ if(b==0) return a; return gcd(b, a%b); } int main(){ int n; while(scanf("%d", &n)!=EOF){ int count = 0; for(int i=0;i<n;++i){ scanf("%d", &a[i]); } for(int i=0;i<n;++i){ for(int j=i+1;j<n;++j){ if(gcd(a[j],a[i])>1) continue; ++count; } } printf("%d\n", count); } return 0; }