国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 14:59:12
字體:
供稿:網(wǎng)友

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小例子:模擬分數(shù)的類 Fraction

這里是一個模擬分數(shù)運算的例子:Fraction 類。分數(shù)運算完后要用最大公約數(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() + ")");   } }   // 分數(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);     }   }     // 分數(shù)加法   public Fraction add(Fraction that) {     return new Fraction(this.numerator * that.denominator + this.denominator * that.numerator,         this.denominator * that.denominator);   }     // 分數(shù)減法   public Fraction minus(Fraction that) {     return new Fraction(this.numerator * that.denominator - this.denominator * that.numerator,         this.denominator * that.denominator);   }     // 分數(shù)乘法   public Fraction multiply(Fraction that) {     return new Fraction(this.numerator * that.numerator,         this.denominator * that.denominator);   }     // 分數(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);   } } 

 
運行輸出:

{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)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 澎湖县| 师宗县| 淮安市| 关岭| 柞水县| 师宗县| 阜阳市| 临猗县| 钟祥市| 泽库县| 黑龙江省| 高尔夫| 大田县| 芷江| 麻阳| 彭泽县| 灌南县| 剑阁县| 合山市| 新民市| 林周县| 响水县| 乐山市| 基隆市| 洪湖市| 东乡族自治县| 芮城县| 南召县| 保山市| 雅江县| 白山市| 海阳市| 巴东县| 桐城市| 朝阳县| 乐都县| 菏泽市| 商河县| 茌平县| 安仁县| 武宁县|