-
Notifications
You must be signed in to change notification settings - Fork 110
Expand file tree
/
Copy pathSimpleNumbersTwo.java
More file actions
78 lines (66 loc) · 2.4 KB
/
Copy pathSimpleNumbersTwo.java
File metadata and controls
78 lines (66 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package simple_numbers_two;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;
public class SimpleNumbersTwo {
/**
* @param divider Делитель числа
* @return true, если делитель простое число, false в противном случае
* */
private static boolean isSimple(int divider){
if(divider == 2) return true;
if (divider % 2 == 0) return false;
for(int i = 3; i < divider / 2; i += 2){
if(divider % i == 0){
return false;
}
}
return true;
}
/**
* @param number Проверяемое число из исходных данных
* @return Массив с количеством простых делителей и исходным числом
* */
private static int [] getDividers(int number){
int numberCopy = number;
Set<Integer> dividers = new HashSet<>();
int index = 2;
while (numberCopy != 1){
if(numberCopy % index == 0){
if(isSimple(index)){
dividers.add(index);
}
numberCopy /= index;
}else index++;
}
return new int[]{dividers.size(), number};
}
public static void main(String[] args) throws IOException {
ArrayList<Integer> array = new ArrayList<>();
TreeMap<Integer, Integer> dividers = new TreeMap<>();
Scanner sc = new Scanner(new FileReader("input.txt"));
while (sc.hasNextLine()){
String[] arr = sc.nextLine().split(" ");
for(String elem : arr){
array.add(Integer.valueOf(elem));
}
}
array.remove(0);
for(int number : array){
int[] dividersSimple = getDividers(number);
if(dividers.containsKey(dividersSimple[0])){
if(dividers.get(dividersSimple[0]) > dividersSimple[1]){
dividers.put(dividersSimple[0], dividersSimple[1]);
}
}else {
dividers.put(dividersSimple[0], dividersSimple[1]);
}
}
String[] resultArr = String.valueOf(dividers.pollLastEntry()).split("=");
String result = resultArr[1];
FileWriter out = new FileWriter("output.txt");
out.write(result);
out.close();
}
}