题解 | #整除问题#
整除问题
https://www.nowcoder.com/practice/8e29045de1c84d349b43fdb123ab586a
//Java版代码 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int a = scanner.nextInt(); int[] factors_n = new int[n + 1]; int[] factors_a = new int[a + 1]; for (int i = 2; i <= n; i++) { getPrime(factors_n, i); } getPrime(factors_a, a); int ans = Integer.MAX_VALUE; for (int i = 2; i <= a; i++) { if (factors_a[i] != 0 && factors_n[i] / factors_a[i] < ans) { ans = factors_n[i] / factors_a[i]; } } System.out.println(ans); } private static void getPrime(int[] factors, int n) { for (int i = 2; i <= Math.sqrt(n); i++) { while (n % i == 0) { factors[i]++; n /= i; } if (n < i) { break; } } if (n > 2) { factors[n]++; } } } #Python版代码 from math import factorial n, a = map(int, input().split()) n = factorial(n) k = 1 while n % a ** k != 0 or n % a ** (k + 1) == 0:k += 1 print(k)