判断质数
判断a是不是质数。
public static boolean yonpn(int a){
double n = Math.sqrt(a);
for (int i = 2; i < n; i++) {
if (a % i == 0){
return false;
}
}
return true;
}
排序
冒泡排序
将数组a[ ] 从小到大排序。
public static void oneSortPro(int[] a) {
if (a.length == 0) {
return;
}
if (a.length == 1) {
return;
}
int max;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
if (a[i] > a[i + 1]) {
max = a[i];
a[i] = a[i + 1];
a[i + 1] = max;
}
}
}
}
将数组a[ ] 从大到小排序的方法与此类似。
下边还有一种较为繁琐的方法
public static void oneSort(int[] a) {
if (a.length == 0) {
return;
}
if (a.length == 1) {
return;
}
int max;
while (!yon(a)) {
for (int i = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]){
max = a[i];
a[i] = a[i + 1];
a[i + 1] = max;
}
}
}
}
public static boolean yon(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]) {
return false;
}
}
return true;
}
约分
输入分子和分母输出的是String类型的结果
public static String reduce(int a, int b) {
for (int i = 1; i < a; i++) {
if (a % i == 0) {
if (b % i == 0) {
a = a / i;
b = b / i;
}
}
}
String st = a + "/" + b;
return st;
}
阶乘
用循环计算
public static int jiecheng(int n){
int out = 1;
for (int i = 1; i <= n; i++) {
out *= i;
}
return out;
}
用递归计算
public static int jiechengpro(int n){
if (n == 1 || n == 0){
return 1;
}
n *= jiechengpro(n - 1);
return n;
}
旋转翻折二维数组
旋转
旋转数组:将数组a[ ][ ]逆时针旋转90°。
public static int[][] RevolveArray(int[][] a){
int[][] b = new int[a[0].length][a.length];
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[0].length; j++)
b[a[0].length - 1 - j][i] = a[i][j];
}
return b;
}
旋转数组:将数组a[ ][ ]顺时针旋转90°。
public static int[][] RevolveArray(int[][] a){
int[][] b = new int[a[0].length][a.length];
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[0].length; j++)
b[j][a.length - 1 - i] = a[i][j];
}
return b;
}
旋转数组:将数组a[ ][ ]旋转180°。
public static int[][] RevolveArray(int[][] a){
int[][] b = new int[a.length][a[0].length];
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[0].length; j++)
b[a.length - 1 - i][a[0].length - 1 - j] = a[i][j];
}
return b;
}
翻折
将数组a[ ][ ]沿 \ 线翻折。
public static int[][] FoldArray(int[][] a){
int[][] b = new int[a[0].length][a.length];
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[0].length; j++)
b[j][i] = a[i][j];
}
return b;
}
将数组a[ ][ ]沿 / 线翻折。
public static int[][] FoldArray(int[][] a){
int[][] b = new int[a[0].length][a.length];
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[0].length; j++)
b[a[0].length - 1 - j][a.length - 1 - i] = a[i][j];
}
return b;
}
其他
在数组a[ ]末尾加入数字
如果数组a[ ]已满可以用以下方法在数组末尾加入数据。(效率较低)
public static int[] add(int[] a, int... n) {
int[] b = new int[a.length + n.length];
System.arraycopy(a, 0, b, 0, a.length);
System.arraycopy(n, 0, b, a.length, n.length);
return b;
}
判断数组a[ ] 是否已经从小到大排好序
public static boolean yon(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]) {
return false;
}
}
return true;
}
判断是否从大到小是否排好序只需将if中的>改成<即可
判断年份y是不是闰年
仅限1582年以来的。
public static boolean runnian(int y) {
if (y % 400 == 0) {
return true;
} else return y % 4 == 0 && y % 100 != 0;
}