`
lanyuaa
  • 浏览: 1757 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
算法 基本算法之3---最大公约数
import java.util.Scanner;

public class Test{
	//最大公约数
  public static int yue(int n,int m){ 
	  if(n==0||m==0)
		  return 0;
	  if(n<m){
		  int temp = n;
		  n = m;
		  m = temp;
	  }
	  int r = n%m;
	  while(r!=0){
		  n=m;
		  m=r;
		  r=n%m;
	  }
	  return m;
  }
  
  //最小公倍数
  public static int bei(int n,int m){
	  if(yue(n,m)==0)
		  return 0;
	  return n*m/yue(n,m);
  }
  

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();

		System.out.println("最大公约数:"+yue(n,m));
		System.out.println("最小公倍数:"+bei(n,m));

	}
}
/**基本思想:
 *  辗转相除法(也可以用相减法,本质相同)
 */
算法 基本算法之4---打印杨辉三角
import java.util.Scanner;

public class Test {
	// 方式1:使用二维数组
	public static void printYang1(int n) {
		int[][] a = new int[n][n];
		a[0][0] = 1;
		System.out.println(a[0][0]);
		for (int r = 1; r < n; r++) {
			a[r][0] = 1;
			System.out.print(a[r][0]);
			for (int c = 1; c < n; c++) {
				a[r][c] = a[r - 1][c - 1] + a[r - 1][c];
				if (a[r][c] != 0)
					System.out.print(" " + a[r][c]);
			}
			System.out.println();
		}
	}

	// 方式2:使用一维数组
	public static void printYang2(int n) {
		int[] a = new int[n];
		System.out.println(1);
		for (int i = 1; i < n; i++) {
			a[0] = a[i] = 1;
			for (int j = i - 1; j > 0; j--) {
				a[j] = a[j] + a[j - 1];
			}
			System.out.print(a[0]);
			for (int t = 1; t <= i; t++)
				System.out.print(" " + a[t]);
			System.out.println();
		}

	}

	public static void main(String[] args) {
		System.out.print(" 请输入要打印的行数:");
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		printYang1(n);
		printYang2(n);
	}
}
/**
 *  使用一维的基本思想:
 * 1 因为不必保持所有信息,所以可以使用一维数组
 * 2 进行递推,以当前的第n行,来写第n+1行。如同第n次写数组的第0~n-1个元素。
 * 3 注意:不要在计算中将未用的数据覆盖,导致有误。
 * 
 */
Global site tag (gtag.js) - Google Analytics