中規中矩的輸入兩個正整數m和n,求其最大公約數和最小公倍數。

求取最大公約數有三種方法:##

  1. 短除法
    把兩個數一直除以它們的公約數,取它們的商繼續除,直到無約數可除爲止.然後把約數全部乘起來,即爲最大公約數.

  2. 歐幾里德算法(輾轉相除法)
    在兩個數中,找出大數.用大數除以小數.得到整數商和餘數.然後再不斷地用除數(原來的小數)除以餘數.直到沒有餘數爲止.那麼除數即爲最大公約數.

  3. 《九章算術》更相減損術
    用大數減小數,得到的差,與減數比大小,然後繼續不斷地大數減小數.直到減數等於差爲止.差即爲最大公約數.

	@Test 
	public void cell(){
	    Scanner sc = new Scanner(System.in);
	    System.out.println("請輸入第一個值:");
	    int m  = sc.nextInt();
	    System.out.println("請輸入第二個值:");
	    int n  = sc.nextInt();
        //如果
	    int divisor = divisor(m,n);
	    System.out.println(divisor);
	}
    
    public int divisor(int m,int n){
		 while(true){
			 if ((m = m % n) == 0){ 
				 return n;
		     } 
			 if ((n = n % m) == 0) {
				 return m;
		     }
		 }
	}
		/**
	 * 兩個數的積除以最大公約數,就是最小公倍數 
	 * @param d
	 * @param f
	 * @param n
	 * @return
	 */
	public  int multiple(int d,int f,int n){
//		d = d/n;
//		f = f/n;
//	    int	res = n*d*f;  (d/n*f/n*n) = d*f/n
		int res = d*f/n;
		return res;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章