欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java求素數(shù)和最大公約數(shù)的簡單代碼示例

 更新時間:2015年09月21日 08:45:53   作者:捏造的信仰  
這篇文章主要介紹了Java求素數(shù)和最大公約數(shù)的簡單代碼示例,其中作者創(chuàng)建的Fraction類可以用來進(jìn)行各種分?jǐn)?shù)運(yùn)算,需要的朋友可以參考下

Java小例子:求素數(shù)
素數(shù)(質(zhì)數(shù))指的是不能被分解的數(shù),除了 1 和它本身之外就沒有其它數(shù)能夠整除。這里是一個小例子,說明如何求取十萬以內(nèi)的所有素數(shù)。
 
素數(shù)的分布沒有規(guī)律可言,所以要檢驗一個數(shù)是不是素數(shù),就必須將它同所有小于它的數(shù)作除法。不過有一個簡便的方法,就是不需要檢驗所有小于它的數(shù),而只要檢驗所有小于它的素數(shù)。如果所有小于它的素數(shù)都不能將其整除,那么它就是素數(shù)。

public class Primes { 
  
  public static void main(String[] args) { 
    // 求素數(shù) 
    List<Integer> primes = getPrimes(100000); 
  
    // 輸出結(jié)果 
    for (int i = 0; i < primes.size(); i++) { 
      Integer prime = primes.get(i); 
      System.out.printf("%8d", prime); 
      if (i % 10 == 9) { 
        System.out.println(); 
      } 
    } 
  } 
  
  /** 
   * 求 n 以內(nèi)的所有素數(shù) 
   * 
   * @param n 范圍 
   * 
   * @return n 以內(nèi)的所有素數(shù) 
   */ 
  private static List<Integer> getPrimes(int n) { 
    List<Integer> result = new ArrayList<Integer>(); 
    result.add(2); 
 
    for (int i = 3; i <= n; i += 2) { 
      if (!divisible(i, result)) { 
        result.add(i); 
      } 
    } 
  
    return result; 
  } 
  
  /** 
   * 判斷 n 是否能被整除 
   * 
   * @param n   要判斷的數(shù)字 
   * @param primes 包含素數(shù)的列表 
   * 
   * @return 如果 n 能被 primes 中任何一個整除,則返回 true。 
   */ 
  private static boolean divisible(int n, List<Integer> primes) { 
    for (Integer prime : primes) { 
      if (n % prime == 0) { 
        return true; 
      } 
    } 
    return false; 
  } 
} 


Java小例子:模擬分?jǐn)?shù)的類 Fraction

這里是一個模擬分?jǐn)?shù)運(yùn)算的例子:Fraction 類。分?jǐn)?shù)運(yùn)算完后要用最大公約數(shù)除分子分母。所以這里也有個用輾轉(zhuǎn)相除法求最大公約數(shù)的例子。另外在構(gòu)造 Fraction 對象時如果分母為零將會拋出異常,這也是必要的檢查。

public class FractionTest { 
  
  public static void main(String[] args) { 
    Fraction a = new Fraction(7, 32); 
    Fraction b = new Fraction(13, 32); 
    System.out.println(a + " + " + b + " = " + a.add(b) + "(" + a.add(b).doubleValue() + ")"); 
    System.out.println(a + " - " + b + " = " + a.minus(b) + "(" + a.minus(b).doubleValue() + ")"); 
    System.out.println(a + " * " + b + " = " + a.multiply(b) + "(" + a.multiply(b).doubleValue() + ")"); 
    System.out.println(a + " / " + b + " = " + a.devide(b) + "(" + a.devide(b).doubleValue() + ")"); 
  } 
} 
  
// 分?jǐn)?shù) 
class Fraction { 
  private int numerator;   // 分子 
  
  private int denominator;  // 分母 
  
  Fraction(int numerator, int denominator) { 
    if (denominator == 0) { 
      throw new IllegalArgumentException("分母不能為 0"); 
    } 
  
    this.numerator = numerator; 
    this.denominator = denominator; 
    shrink(); 
  } 
  
  Fraction() { 
    this(0, 1); 
  } 
  
  public int getNumerator() { 
    return numerator; 
  } 
  
  public void setNumerator(int numerator) { 
    this.numerator = numerator; 
  } 
  
  public int getDenominator() { 
    return denominator; 
  } 
  
  public void setDenominator(int denominator) { 
    this.denominator = denominator; 
  } 
  
  // 分子分母同除以最大公約數(shù) 
  private Fraction shrink() { 
    int maxCommonDivisor = getMaxCommonDivisor(this.denominator, this.numerator); 
    this.numerator /= maxCommonDivisor; 
    this.denominator /= maxCommonDivisor; 
    return this; 
  } 
  
  // 輾轉(zhuǎn)相除法求最大公約數(shù) 
  private int getMaxCommonDivisor(int a, int b) { 
    int mod = a % b; 
  
    if (mod == 0) { 
      return b; 
    } else { 
      return getMaxCommonDivisor(b, mod); 
    } 
  } 
  
  // 分?jǐn)?shù)加法 
  public Fraction add(Fraction that) { 
    return new Fraction(this.numerator * that.denominator + this.denominator * that.numerator, 
        this.denominator * that.denominator); 
  } 
  
  // 分?jǐn)?shù)減法 
  public Fraction minus(Fraction that) { 
    return new Fraction(this.numerator * that.denominator - this.denominator * that.numerator, 
        this.denominator * that.denominator); 
  } 
  
  // 分?jǐn)?shù)乘法 
  public Fraction multiply(Fraction that) { 
    return new Fraction(this.numerator * that.numerator, 
        this.denominator * that.denominator); 
  } 
  
  // 分?jǐn)?shù)除法 
  public Fraction devide(Fraction that) { 
    return new Fraction(this.numerator * that.denominator, 
        this.denominator * that.numerator); 
  } 
  
  public double doubleValue() { 
    return (double) numerator / denominator; 
  } 
  
  @Override 
  public String toString() { 
    return String.format("{%d/%d}", this.numerator, this.denominator); 
  } 
} 

 
運(yùn)行輸出:

{7/32} + {13/32} = {5/8}(0.625)
{7/32} - {13/32} = {-3/16}(-0.1875)
{7/32} * {13/32} = {91/1024}(0.0888671875)
{7/32} / {13/32} = {7/13}(0.5384615384615384)

相關(guān)文章

  • idea輸入sout無法自動補(bǔ)全System.out.println()的問題

    idea輸入sout無法自動補(bǔ)全System.out.println()的問題

    這篇文章主要介紹了idea輸入sout無法自動補(bǔ)全System.out.println()的問題,本文給大家分享解決方案,供大家參考,需要的朋友可以參考下
    2020-07-07
  • java+testng+selenium的自動化測試實例

    java+testng+selenium的自動化測試實例

    這篇文章主要介紹了java+testng+selenium的自動化測試實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 如何使用Maven管理項目?Maven管理項目實例

    如何使用Maven管理項目?Maven管理項目實例

    下面小編就為大家?guī)硪黄绾问褂肕aven管理項目?Maven管理項目實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Springboot GET和POST請求參數(shù)獲取方式小結(jié)

    Springboot GET和POST請求參數(shù)獲取方式小結(jié)

    Spring Boot GET和POST請求參數(shù)獲取是開發(fā)人員經(jīng)常需要解決的問題,本文主要介紹了Springboot GET和POST請求參數(shù)獲取方式小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • java解析XML Node與Element的區(qū)別(推薦)

    java解析XML Node與Element的區(qū)別(推薦)

    下面小編就為大家分享一篇java解析XML Node與Element的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 一篇文章帶你入門Java變量

    一篇文章帶你入門Java變量

    這篇文章主要介紹了Java變量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • 深入了解Java 腳本化api編程

    深入了解Java 腳本化api編程

    Java 腳本 API 是一種獨(dú)立于框架的腳本語言,使用來自于Java代碼的腳本引擎 ??梢允褂肑ava語言編寫定制/可擴(kuò)展的應(yīng)用程序并將自定義腳本語言選擇留給最終用戶 。下面我們來詳細(xì)了解一下吧
    2019-06-06
  • Java用自定義的類作為HashMap的key值實例

    Java用自定義的類作為HashMap的key值實例

    下面小編就為大家?guī)硪黄狫ava用自定義的類作為HashMap的key值實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Spring中@EnableScheduling注解的工作原理詳解

    Spring中@EnableScheduling注解的工作原理詳解

    這篇文章主要介紹了Spring中@EnableScheduling注解的工作原理詳解,@EnableScheduling是 Spring Framework 提供的一個注解,用于啟用Spring的定時任務(wù)(Scheduling)功能,需要的朋友可以參考下
    2024-01-01
  • java與C 代碼運(yùn)行效率的對比(整理)

    java與C 代碼運(yùn)行效率的對比(整理)

    最近和朋友無意間討論起了 有關(guān)java 和C 的 效率問題, (我是java 推介者, 他是 c 語言推介者, 他做的是嵌入式)故,想通過網(wǎng)絡(luò)查詢一下, 總結(jié)一下,兩者到底效率如何,其有何差異,原因又是啥?各種優(yōu)勢有在何處?
    2021-04-04

最新評論