package week2.arrayutil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by zndbl on 2017/3/23.
*/
public class ArrayUtils {
public static void main(String[] args) {
// int[] oldArray = new int[]{4,6,2,1,0,5,0,8};
// int[] newArray = reverseArray(oldArray);
// int[] newArray = removeZero(oldArray);
// String array = "[";
// for(int i = 0 ; i < newArray.length ; i++) {
// array += newArray[i];
// }
// array += "]";
// System.out.println(array);
// String s = seperatorArray(oldArray);
// System.out.println(s);
// List math = getAllMath(6);
// int[] array = getPrimeArray(23);
// printArray(array);
getFibonacci(15);
}
public static void printArray(int[] newArray) {
String array = "[";
for (int i = 0; i < newArray.length; i++) {
array += (newArray[i]+",");
}
array += "]";
System.out.println(array);
}
/**
* 数组的反转
*
* @param oldArray
* @return
*/
public static int[] reverseArray(int[] oldArray) {
int[] newArray = new int[oldArray.length];
for (int i = 0; i < (oldArray.length); i++) {
newArray[i] = oldArray[oldArray.length - 1 - i];
}
return newArray;
}
/**
* 清除数组中的元素0
*
* @param array
* @return
*/
public static int[] removeZero(int[] array) {
int[] newArray = new int[array.length];
int j = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] != 0) {
newArray[j++] = array[i];
}
}
System.out.println(j);
Arrays.copyOf(newArray, j);
return newArray;
}
/**
* 连接字符
*
* @param oldArray
* @return
*/
public static String seperatorArray(int[] oldArray) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < oldArray.length; i++) {
if (i == oldArray.length - 1) {
sb.append(oldArray[i]);
break;
}
sb.append(oldArray[i]).append("_");
}
return sb.toString();
}
/**
* 传100,求小于100的所有完数
*
* @param old
* @return
*/
public static List getAllMath(int old) {
List<Integer> list = new ArrayList<>();
int count = 0;
for (int i = 1; i <= old - 1; i++) {
if (old % i == 0) {
System.out.println(i);
count = count + i;
list.add(i);
}
}
if (count == old) {
return list;
}
return new ArrayList();
}
/**
* 返回所有小于给定数的素数数组
*
* @param old
* @return
*/
public static int[] getPrimeArray(int old) {
int[] primeArray = new int[old];
int k = 0;
for (int i = 1; i < old; i++) {
if (isPrime(i)) {
primeArray[k] = i;
k++;
}
}
return Arrays.copyOf(primeArray, k );
}
/**
* 判断一个数是不是素数
*
* @param i
* @return
*/
public static boolean isPrime(int i) {
int count = 0;
for (int j = 1; j <= i; j++) {
if (i % j == 0) {
count++;
}
}
if (count > 2 || count == 1) {
return false;
}
return true;
}
/**
* 小于给定数的斐波那契数列
* 传进去15,1 1 2 3 5 8 13
* @param old
* @return
*/
public static void getFibonacci(int old) {
int first = 1;
int second = 1;
int num = add(first, second, old);
System.out.println(num);
}
public static int add(int first, int second, int old) {
int last = first + second;
int before = second;
if(last > old) {
return before;
}
return add(before, last, old);
}
}