Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int n = in.nextInt();
- int[] s = new int[n];
- int max = -1;
- for (int i = 0; i < n; ++i) {
- s[i] = in.nextInt();
- max = Math.max(max, s[i]);
- }
- List<Integer> primes = new ArrayList<>();
- boolean[] prime = new boolean[max + 1];
- Arrays.fill(prime, true);
- prime[0] = prime[1] = false;
- int[] p = new int[max + 1];
- int ind = 0;
- for (int i = 2; i <= max; ++i) {
- if (prime[i]) {
- if ((long)i * i <= max) {
- for (int j = i * i; j <= max; j += i) {
- prime[j] = false;
- }
- }
- p[ind++] = i;
- }
- }
- int ans = 0;
- for (int i = 0; i < ind; ++i) {
- int temp = 0;
- for (int j = 0; j < n && p[i] <= s[j]; ++j) {
- if (factorization(s[j], p[i])) {
- ++temp;
- }
- }
- ans = Math.max(ans, temp);
- }
- out.println(Math.max(ans, 1));
- }
- static boolean factorization(int n, int t) {
- int z = 2;
- while (z * z <= n) {
- if (n % z == 0) {
- n /= z;
- if (z == t) {
- return true;
- }
- } else {
- z++;
- }
- }
- if (n > 1) {
- return n == t;
- }
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement