Java基础语法实战系统总结6(陆续上传中...)

逆向输出数字(正整数)?
   如:正整数32496,逆向输出为69423;
   FanInputNum.java
// 原理:首先分离最低位,即与10取余即可,然后抛弃最低位,再把当前位看成最低位,以此推下去...
// 如:456786 首先是6  然后再把8看做最低位.....

public class FanInputNum{
public static void main(String args[]){
  int number = (int)(Math.random()*1000000);// 产生1000000以内的正整数
  int remainder;
  System.out.println("要处理的数字: " + number);
  System.out.print("逆向输出的数字是 : ");
  while(number > 0){ //循环直到数字为0为止
   remainder = number % 10;//分离出个位
   System.out.print(remainder);
   number /= 10;
  }
}
}

求斐波那契数列(Fibonacci数列)?

   Kn = 1; 当n=1或2时
   Kn=Kn-1 + Kn-2  当n>=3时 (Kn-1,n-1是K的下标)
   即从第三项起,每一项都是它前两项之和。
// 原理:
// 从第3项开始,每一项都是它的前两项之和;1 1 2 3 5 8 13 21.........
// 定义为整型时,第47项会超出整型的范围
public class Finonacci{
public static void main(String args[]){
  int k1=1,k2 =1, k3;
  // 输出前2位数
  System.out.print(k1 + " " + k2 + " ");
  for(int i=3;i<=24; i++){
    k3 = k1 + k2;
    System.out.print(k3 + " ");
    if(i%8 == 0)
    { // 每行输出8项
     System.out.println();
    }
     //开始迭代,保存最近2项的值
     k1 = k2;
     k2 = k3;
  
  }
}
}

求最大公约数和最小公倍数?   GcdAndGcm.java

// 随机产生:
// 两种方法:1.给定义个数r,它的初始值为min(n,m)起,测试它是否能同时被m和n整除,如果不能
//           ,则将其值减1,再测试。依次类推,一旦它能被两个整数整除,那么这个r 就是最大
             公约数,但这方法效率低下;
// 主要采用如下方法:
// 2.采用欧几里得辗转相除法 1.求余数,r=m%n 2.设m<--n,n<--r 3.若r==0,则m为最大公约数,
//  退出循环,否则转到1步
public class GcdAndGcm{
public static void main(String args[]){
  int m = (int)(Math.random()*1000);
  int n = (int)(Math.random()*1000);
  int r;
  int sm=m,sn=n; // 保存这2个数的值
  // 下面的循环根据辗转相除法球最大公约数
  do{
   r = m%n;
   m = n;
   n = r;
  }
  while(r>0);
   // 循环结束,最大公约数存放在m中
   System.out.println(sm +"和" + sn + "最大公约数是:" + m);
   System.out.println(sm +"和" + sn + "最小公倍数是:" + sm*sn/m);
 
}
}

你可能感兴趣的:(java)