package nowcoder.demo40;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int n = scanner.nextInt();
int[] arr =new int[n];
for (int i = 0; i < n; i++) {
arr[i]=scanner.nextInt();
}
int count=0;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
if (gcd(arr[i],arr[j])==1)
count++;
}
}
System.out.println(count);
}
}
/**
* 计算最大公因数,辗转相除法
* 运行时间:120ms
*
* 占用内存:12932k
* */
static int gcd(int a,int b){
if(b==0)return a;
else return gcd(b,a%b);
}
}
重点在于使用辗转相除法求最大公约数
两个数中较大的一个数记为n1,较小的数记为n2
1、mod=n1%n2,若mod=0,则n2为最大公因数
2、n1=n2,n2=mod,转到1
//辗转相除法求最大公因数
public static int maxFactor(int n1,int n2){
if(n1<n2){
int t=n1;
n1=n2;
n2=t;
}
int mod;
int shang;
do{
mod=n1%n2;
shang=n1/n2;
n1=n2;
n2=mod;
}while(mod!=0);
return n1;
}
import java.util.*;
public class Main {
public static int gcd(int p, int q) {
if (q == 0)
return p;
int r = p % q;
return gcd(q, r);
}
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
while (reader.hasNext()) {
int N = reader.nextInt();
int[] number = new int[N];
for (int i = 0; i < N; ++i) {
number[i] = reader.nextInt();
}
int cnt = 0;
for (int i = 0; i < N - 1; ++i) {
for (int j = i + 1; j < N; ++j) {
int big = Math.max(number[i], number[j]);
int small = Math.min(number[i], number[j]);
if (big % small != 0 && gcd(big, small) == 1)
cnt++;
}
}
System.out.println(cnt);
}
}
} public class Main {
public int doSome(int[] lists){
int count=0;
loop1:for(int i=0;i<lists.length;i++){
loop2:for(int j=0;j<lists.length;j++){
if(i==j||lists[i]>lists[j]){
continue;
}
if(lists[j]%lists[i]!=0&&lists[i]<lists[j]){
loop3:for(int k=2;k<=lists[i];k++){
if(lists[i]%k==0&&lists[j]%k==0){
continue loop2;
}else{
continue;
}
}
count++;
}
}
}
return count;
}
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
Main m=new Main();
while(true){
int size=s.nextInt();
if(size==0){
break;
}
int[] lists=new int[size];
for(int i=0;i<size;i++){
lists[i]=s.nextInt();
}
System.out.println(m.doSome(lists));
}
}
}
import java.util.ArrayList;
import java.util.Scanner;
/*
* QQ: 825580813(一起来敲代码)
* 思路:
* 1, 两个数为一个组合,所以要双重遍历数组.
* 2, 如果两个数的最大公约数为1,则符合题目意思
*/
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n;
while ((n = sc.nextInt()) != 0) {
ArrayList<Integer> arr = new ArrayList<>();
for (int i = 0; i < n; ++i) {
arr.add(sc.nextInt());
}
int res = getFractionNum(arr);
System.out.println(res);
}
sc.close();
}
private static int getFractionNum(ArrayList<Integer> arr) {
int res = 0;
for (int i = 0; i < arr.size(); ++i) {
for (int j = i + 1; j < arr.size(); ++j) {
if (gcd(arr.get(i), arr.get(j)) == 1) {
res++;
}
}
}
return res;
}
private static int gcd(Integer num1, Integer num2) {
return num1 == 0 ? num2 : gcd(num2 % num1, num1);
}
}