⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mathproblem.java

📁 一些Java的小的应用程序
💻 JAVA
字号:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MathProblem {
	public static String  s;
	public static void main(String  args[]){
		try{BufferedReader input=new BufferedReader
			(new InputStreamReader(System.in));
		System.out.println("请输入一个正整数!");
		int m=Integer.parseInt(input.readLine());
		System.out.println("请再输入一个正整数!!");
		int n=Integer.parseInt(input.readLine());
		System.out.println("运算结果如下 :");
		System.out.println(m+"和"+n+"的最小公倍数是 "+lcm(m,n));
		System.out.println(m+"和"+n+"的最大公约数是 \n"+"利用算法一:"+gcd1(m,n)+
				"\n算法二:"+gcd2(m,n)+"\n利用算法三:"+gcd3(m,n));
		System.out.println(m+"和"+n+"的乘积是 "+Multiply1(n,m));
		System.out.println(m+"和"+n+"的阶乘是:\n"+m+"!= "+
				factor1(m)+"\n"+n+"!= "+factor1(n));
		System.out.println("小于"+m+"的裴波那契数列为");
		for(int i=1;i<=m;i++)
			System.out.print(fib(i)+" ");
		System.out.println();
				System.out.println("小于"+n+"的裴波那契数列为");
		for(int i=1;i<=n;i++)
			System.out.print(fib(i)+" ");
		System.out.println();
		if(n>=m)System.out.println(m+"对"+n+"的组合数为\n利用算法一:"+combination1(m,n)+
				"\n利用算法二:"+combination2(n,m));
		else System.out.println(n+"对"+m+"的组合数为\n利用算法一:"+combination1(m,n)+
				"\n利用算法二:"+combination2(n,m));
		System.out.println("利用万能阶乘\n"+m+"的阶乘是:");
		factor2(m);
		System.out.println(n+"的阶乘是:");
	factor2(n);
	}catch(Exception e){}}
//	====================最小公倍数==============
	public static int lcm(int m,int n){
	return m*n/gcd1(m,n);
	}
//================递归乘法=两数的乘积=========
	public static int Multiply1(int m,int n){
		int result;
		if(n==1) result=m;
		else result=m+Multiply1(m,n-1);
		return result;
	}
	
//================//递归字符串=字符串的回文=============
public static void reverse(int n){
		if(n<s.length()){
			reverse(n+1);
			System.out.println(s.charAt(n));
		}
	}

//=================递归阶乘================
public static int factor1(int n){
		if(n<=1)return 1;
		else return n*factor1(n-1);
	}
//===================最大公约数1============
public static  int gcd1(int m,int n){
		int temp;
		while(m>0){
			if(m<n){
				temp=m;m=n;n=temp;
			}m-=n;
		}return  n;
	}
//===================最大公约数2============
public static int gcd2(int m,int n){
		if(m<=1)return 1;
		else if(m<n)return gcd2(n,m);
		else return gcd2(m-n,n);
	}
//===================最大公约数3============
public static int gcd3(int m,int n){
		if(n==0)return m;
		else return gcd3(n,m%n);
	}////递归最大公约数
//==================裴波那契数列===============
public static int fib(int n){
		if(n<=1)return n;
		else return fib(n-1)+fib(n-2);
	}//递归裴波那契数列
	
//==================组合数1===================
public static int combination1(int m,int n){
	int a,b;
	//a=(m>=n?m:n);
	if(m>=n){a=m;b=n;}
	else {a=n;b=m;}
		if(a==b|b==0)return 1;
		else return combination1(a-1,b)+combination1(a-1,b-1);	
	}
//===================组合数2==============================
public static int combination2(int m,int n){
	int a,b;
	//a=(m>=n?m:n);
	if(m>=n){a=m;b=n;}
	else {a=n;b=m;}
    double result=1;
		for(int i=1;i<=b;i++){
			result*=a--;
			result/=i;
		}
		/**for(int j=m;j>0;j--){
			result*=n--;
			result/=j;
		}*/
		return (int)result;
	}//递归组合数
//===================万能阶乘==============
public static void factor2(int n){
 int[] data=new int[10];int[] temp;
 int digit=1;
 data[0]=1;
for(int i=1;i<data.length;i++)data[i]=0;
for(int i=1;i<=n;i++){
 for(int j=0;j<=digit;i++){
  data[j]*=i;
  if(data[j]>10){
   for(int k=j;k<=digit;k++){
  
    if(data[digit]>10)digit++;
     data[k+1]=data[k+1]+data[k]/10;
     data[k]%=10;
   }
  }
  }
}
System.out.print(n+"!= ");
for(int m=digit;m>0;m--)
	   System.out.print(data[m]);
System.out.println();
}

//	折半查找
	public static int search1(int[] a,int keyvalue){
	 int left=0;
	 int right=a.length-1;
	 int middle=0;
	 while(left<=right&a[middle]!=keyvalue){
	 middle=(left+right)/2;
	 if(keyvalue<a[middle])right=middle-1;
	 else if(keyvalue>a[middle])left=middle+1;
	 else if(keyvalue==a[middle])return middle;
	
	 }if(right>left)middle=-1;
	 return middle;
	}//递归折半查找
	static int[] A;
	public static int search2(int left,int right,int keyvalue){
	 int middle=0;
	 if(left>right)return -1;
	 else{
	  middle=(left+right)/2;
	  if(keyvalue<A[middle])return search2(left,middle-1,keyvalue);
	  else if(keyvalue>A[middle])return search2(middle+1,right,keyvalue);
	  else if(keyvalue==A[middle])return middle;
	  else return -1;
	 }
}}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -