1.矩阵转置
public class MatTrans {
public static void main(String[] args) {
//矩阵转置
int[][] arr={
{0,0,0,0},
{1,1,1,1},
{2,2,2,2},
{3,3,3,3},
};
System.out.println("转置前:");
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
System.out.println("-------");
System.out.println("转置后:");
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[j][i]+" ");
}
System.out.println();
}
}
}
运行结果
转置前:
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
-------
转置后:
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
2.最大公约数和最小公倍数
辗转相除法求最大公约数,最小公倍数为两数乘积除以最大公约数。
import java.util.Scanner;
public class Gcd_Lcm {
public static void main(String[] args) {
//辗转相除法求最大公约数
//最小公倍数为两数乘积除以最大公约数
System.out.println("enter two number:");
//输入两个数
Scanner sc=new Scanner(System.in);
int x1=sc.nextInt();
int x2=sc.nextInt();
//将x1调整为较大的那个数
if(x1<x2){
int temp=x1;
x1=x2;
x2=temp;
}
//保存两数的乘积
int x4=x1*x2;
//辗转相除法
int x3=x1%x2;
while(x3!=0){
x1=x2;
x2=x3;
x3=x1%x2;
}
//输出最大公约数
System.out.println("gcl:"+x2);
//输出最小公倍数
System.out.println("lcm:"+(x4/x2));
}
}
运行结果
enter two number:
10 15
gcl:5
lcm:30
3.计算自然对数的底e的值
计算自然对数的底e的值,公式:e=1+1/1!+1/2!+……+1/n!,要求精确到10^-10。
public class E {
public static void main(String[] args) {
//计算自然对数的底e的值
//公式:e=1+1/1!+1/2!+……+1/n!
//要求精确到10^-10
//将e初始化
double e=0;
//用于计算公式中的阶乘
double sum=1;
int i=1;
while(1/sum>1e-10){
e+=1/sum;
sum*=i++;
}
//输出Java中的标准e与计算结果对比
System.out.println("E:"+Math.E);
//输出计算结果
System.out.printf("e:%.10f",e);
}
}
运行结果
E:2.718281828459045
e:2.7182818284
4.输出1000以内的回文素数
输出1000以内的回文素数,回文数例如:11、22、121、363,素数:因数只有1和它本身。例如:2、3、5、7、11。
public class Huiwen_sushu {
public static void main(String[] args) {
//输出1000以内的回文素数
//回文数例如:11、22、121、363
//素数:因数只有1和它本身。例如:2、3、5、7、11
for(int i=1;i<=1000;i++){
//判断i是否为素数
boolean pd1=suShu(i);
//判断i是否为回文数
boolean pd2=huiWen(i);
//如果i满足条件则输出
if(pd1&&pd2){
System.out.println(i);
}
}
}
//定义判断一个数是否为素数的方法
public static boolean suShu(int num){
int sum=0;
for(int i=1;i<=num;i++){
//计算其因数的个数
if(num%i==0){
sum++;
}
}
//如果有且只有两个因数则为素数
if(sum==2){
return true;
}
return false;
}
//定义判断一个数是否为回文数的方法
public static boolean huiWen(int num){
//如果这个数是两位数判断其个位和十位是否相等
if(num<100){
//取其个位
int ge=num%10;
//取其十位
int shi=num/10;
if(ge==shi){
return true;
}
}
//如果这个数是三位数判断其百位和个位是否相等
if(num>99){
//取其百位
int bai=num/100;
//取其个位
int ge=num%10;
if(bai==ge){
return true;
}
}
return false;
}
}
运行结果
11
101
131
151
181
191
313
353
373
383
727
757
787
797
919
929
5.判断两个年份之间的平闰年情况
输出任意两个年份之间的闰年和平年,任意两个年份是指两个年份大小顺序随意。
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
//输出任意两个年份之间的闰年和平年
//任意两个年份是指两个年份大小顺序随意
Scanner sc=new Scanner(System.in);
System.out.println("输入两个年份:");
int x1=sc.nextInt();
int x2=sc.nextInt();
//区分哪个年份大哪个年份小
int max=x1>x2?x1:x2;
int min=x1<x2?x1:x2;
//判断两个年份之间的所有年份并输出
for(int i=min;i<=max;i++){
if(runNian(i)){
System.out.printf("%d是闰年\n",i);
}else{
System.out.printf("%d是平年\n",i);
}
}
}
//用于判断一个年份是否为闰年
public static boolean runNian(int year){
return (year%4==0&&year%100!=0||year%400==0);
}
}
运行结果
输入两个年份:
2022 2010
2010是平年
2011是平年
2012是闰年
2013是平年
2014是平年
2015是平年
2016是闰年
2017是平年
2018是平年
2019是平年
2020是闰年
2021是平年
2022是平年