📄 mathproblem.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 + -