标签:ext port ret 输出 最大公约数 要求 turn mod one
3在十进制下满足若各位和能被3整除,则该数能被3整除。
5在十六进制下也满足此规律。
给定数字k,求多少进制(1e18进制范围内)下能满足此规律,找出一个即可,无则输出-1。
写写画画能找到规律,即是求与k互质的数x,x进制下即能满足上述规律。
求最大公约数:辗转相除法(又叫欧几里得算法)
gcd(a, b) = gcd(b , a mod b)
,对于正整数a、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;
}
}
[算法]求满足要求的进制(辗转相除(欧几里得算法),求最大公约数gcd)
标签:ext port ret 输出 最大公约数 要求 turn mod one
原文地址:https://www.cnblogs.com/coding-gaga/p/12040445.html