teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

重複した要素と素数への対応の変更

2019/12/24 05:25

投稿

d_96a
d_96a

スコア15

answer CHANGED
@@ -2,32 +2,36 @@
2
2
  本来の目的であったnumの最後の要素以外を並び替え、
3
3
  numのindexに対応するようにfizzの要素も並び替え出力することができました。
4
4
  ```java
5
+ int flag=0;
6
+ Collections.sort(index, (i1, i2) -> num.get(i1) - num.get(i2));
7
+
5
- ist<Integer> list = new ArrayList<Integer>();
8
+ List<Integer> oldNum = new ArrayList<>(num);
6
- list.addAll(num);
7
- List<Integer> index = new ArrayList(num.size());
8
- for (int i = 0; i < num.size(); i++) {
9
+ for (int i = 0; i < index.size(); i++) {
9
- index.add(i);
10
+ num.set(i, oldNum.get(index.get(i)));
10
- }
11
+ }
12
+ List<String> oldFizz = new ArrayList<>(fizz);
11
- boolean flag=false;
13
+ for (int i = 0; i < index.size(); i++) {
12
- Collections.sort(index, (i1, i2) -> num.get(i1) - num.get(i2));
14
+ fizz.set(i, oldFizz.get(index.get(i)));
13
- Collections.sort(fizz, (s1, s2) -> num.get(fizz.indexOf(s1)) - num.get(fizz.indexOf(s2)));
14
- Collections.sort(num);
15
+ }
15
- int m = list.get(list.size()-1);
16
+ int m = list.get(list.size()-1);
16
- for(int i=0;i<num.size();i++) {
17
+ for(int i=0;i<num.size();i++) {
17
-   if(m%num.get(i)==0) {
18
+ if(m%num.get(i)==0) {
18
-     System.out.print(fizz.get(i));
19
+ System.out.print(fizz.get(i));
20
+ }else{
19
-     flag=true;
21
+ flag += 1;
22
+ }
20
-   }else if(flag==false&&m>2){
23
+ }if(flag==num.size()&&m>2){
24
+ for(int i=0;i<num.size();i++) {
21
- for(i = 2; i < m-1; i++){
25
+ for(i = 2; i < m; i++){
22
- if(m % i == 0) {
26
+ if(m % i == 0) {
23
- System.out.println(m);
27
+ System.out.println(m);
24
- }else{
28
+ }else{
25
- System.out.println("prime");
29
+ System.out.println("prime");
26
- }return;
30
+ }return;
27
- }
31
+ }
32
+ }
28
-   }else if(flag==false&&m<=2){
33
+ }else if(flag==num.size()&&m<=2){
29
- System.out.println(m);
34
+ System.out.println(m);
30
- return;
35
+ return;
31
- }
36
+ }
32
- }
33
37
  ```