1.练习-二维数组排序
首先定义一个5X8的二维数组,然后使用随机数填充满。
借助Arrays的方法对二维数组进行排序。
参考思路:
先把二维数组使用System.arraycopy进行数组复制到一个一维数组
然后使用sort进行排序
最后再复制回到二维数组。
package review3;
import java.util.Arrays;
import java.util.Random;
public class Text6 {
public static void main(String[] args) {
int two[][] = new int[5][8];
int one[] = new int[40];
System.out.println("初始化二维数组:");
//用10~99的随机数初始化二维数组
for(int i = 0;i < 5; i++){
for(int j = 0;j < 8; j++){
two[i][j] = new Random().nextInt(90)+10;
System.out.print(two[i][j]+" ");
}
System.out.println();
}
//将二维数组转为一维数组
for(int i = 0;i < 5; i++){
System.arraycopy(two[i], 0, one, 8*i, 8);
}
//对一维数组进行排序
Arrays.sort(one);
// System.out.println(Arrays.toString(one));
//将排序后的一维数组转为二维数组
for(int i = 0;i < 5; i++){
two[i] = Arrays.copyOfRange(one, 8*i, 8*(i+1));
}
//打印排序后的二维数组
System.out.println("打印排序后的二维数组:");
for(int i = 0;i < 5; i++){
for(int j = 0;j < 8; j++){
System.out.print(two[i][j]+" ");
}
System.out.println();
}
}
}
2.寻找一千万以内的质数个数
质数概念: 只能被1和自己整除的数
举例:
5只能被 1和5整除,所以是质数
8可以被2整除,所以不是质数
package review3;
public class Test7 {
public static void main(String[] args) {
int sum = 0;
int max = 1000*1000;
for(int i=2; i<max; i++) {
if(isPrime(i)) {
sum++;
}
}
System.out.println("一千万以内的质数:"+sum);
}
public static boolean isPrime(int n) {
if(n<2) return false;//1既不是质数也不是偶数
if(n == 2) return true;//2是质数
if(n%2 == 0) return false;//排除偶数
//去掉偶数的判断
//进一步减少判断的范围 sqrt(n)
for(int i=3; i<=Math.sqrt(n); i+=2) {
if(n%i == 0) return false;
}
return true;
}
}