[アルゴリズム]バイナリ(分割を除去(ユークリッドアルゴリズム)、最大公約数GCD)の要件を満たすために求め

タイトル

あなたが会うと3で割り切れる場合は3は、その後、数が小数で3で割り切れます。
六角で5も、このルールを満たします。
数kが与えられると、このルールで数16進数(16進数の範囲内1E18)を満たすを見つける、フリー出力を見つけるためには-1です。

問題の解決策

法律は、すなわち、kはxの数を見つけるために互いに素である、すなわち、下xは上記のルールを満たすDECIMAL、見つけることができ引いてもよいです。

関連

最大公約数:(も​​ユークリッドアルゴリズムとして知られている)ユークリッドの互除法

  • ユークリッドの定理:gcd(a, b) = gcd(b , a mod b)正の整数、bについて。
  • 式中、a、bの大きさは関係ありません。値が値b未満である場合、再帰呼び出しアルゴリズムは、bの値を介して交換することができます。

コード

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        long k = sc.nextInt();
        long x = k + 1;
        for (; x <= 1e18; ++x) {
            if (gcdGreaterThanOne(k, x)) {
                System.out.println(x);
                break;
            }
        }
        if (x > 1e18) {
            System.out.println(-1);
        }
    }

    public static boolean gcdGreaterThanOne(long num1, long num2) {
        return gcd(num1, num2) == 1;
    }

    private static long gcd(long num1, long num2) {
        while (num2 != 0) {
            long r = num1 % num2;
            num1 = num2;
            num2 = r;
        }
        return num1;
    }
}

おすすめ

転載: www.cnblogs.com/coding-gaga/p/12040445.html