[伯俊]9613:GCDと


📍 質問する



💡 に近づく


N個の数字を配列に入れてsumGCD関数に渡す.sumGCD関数では、ダブルforゲートで、各sumにすべてのペアのGCD値を入れ、sumを返します.
int資料型宣言でエラー😥 資料型に注意!

👩‍💻 コード#コード#

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int T = Integer.parseInt(br.readLine());
			
		for(int j =0; j < T; j++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int N = Integer.parseInt(st.nextToken());
            long[] num = new long[N];
			for(int i = 0; i < N; i++) {
				  num[i] = Integer.parseInt(st.nextToken());
			}
			bw.write(sumGCD(num) + "\n");
		}

        br.close();
        bw.close();
    }
    
    public static long sumGCD(long[] arr) {
		long sum = 0;
		
		for(int i=0; i<arr.length; i++) {
			for(int j=i+1; j<arr.length; j++) {
				sum += gcd(arr[i], arr[j]);
			}
		}
		
		return sum;
	}

	public static long gcd(long a, long b) {
		if (b == 0)
			return a;
		return gcd(b, a % b);
	}
} 

🔗 リンク


https://www.acmicpc.net/problem/9613