Skip to content

Commit 534e9f5

Browse files
author
yc
committed
更正完全数
1 parent 0096fca commit 534e9f5

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

group20/755659358/week02/src/com/coderising/practice/array/ArrayUtil.java

+5-8
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public boolean isPrime(int a) {
160160
public int[] getPerfectNumbers(int max) {
161161
ArrayList<Integer> list=new ArrayList<>();
162162
for (int i = 2; i < max; i++) {
163-
int [] splits=primeSplit(i);
163+
int [] splits=numSplit(i);
164164
if (sumArray(splits)==i) {
165165
list.add(i);
166166
}
@@ -177,23 +177,20 @@ public int sumArray(int[] arr){
177177
return sum;
178178
}
179179

180-
public int[] primeSplit(int x){
180+
public int[] numSplit(int x){
181181
if (x<=1) {
182182
return new int[]{};
183183
}
184184
if (x==2) {
185185
return new int[]{1,2};
186186
}
187-
int k=2;
187+
int k=1;
188188
ArrayList<Integer> list=new ArrayList<>();
189-
list.add(1);
190-
while (k<=x) {
189+
while (k<=x&&(x/k>=2)) {
191190
if (x%k==0) {
192191
list.add(k);
193-
x=x/k;
194-
}else {
195-
k++;
196192
}
193+
k++;
197194
}
198195

199196

group20/755659358/week02/src/com/coderising/practice/array/ArrayUtisTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public void testGetPrime(){
6161
@Test
6262
public void testGetPerfectNum(){
6363

64-
assertArrayEquals(new int[]{6}, util.getPerfectNumbers(13));
64+
assertArrayEquals(new int[]{6,28,496}, util.getPerfectNumbers(1000));
6565
}
6666

6767
@Test

0 commit comments

Comments
 (0)