Java求素?cái)?shù)和最大公約數(shù)的簡單代碼示例
Java小例子:求素?cái)?shù)
素?cái)?shù)(質(zhì)數(shù))指的是不能被分解的數(shù),除了 1 和它本身之外就沒有其它數(shù)能夠整除。這里是一個(gè)小例子,說明如何求取十萬以內(nèi)的所有素?cái)?shù)。
素?cái)?shù)的分布沒有規(guī)律可言,所以要檢驗(yàn)一個(gè)數(shù)是不是素?cái)?shù),就必須將它同所有小于它的數(shù)作除法。不過有一個(gè)簡便的方法,就是不需要檢驗(yàn)所有小于它的數(shù),而只要檢驗(yàn)所有小于它的素?cái)?shù)。如果所有小于它的素?cái)?shù)都不能將其整除,那么它就是素?cái)?shù)。
public class Primes {
public static void main(String[] args) {
// 求素?cái)?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)的所有素?cái)?shù)
*
* @param n 范圍
*
* @return n 以內(nèi)的所有素?cá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 包含素?cái)?shù)的列表
*
* @return 如果 n 能被 primes 中任何一個(gè)整除,則返回 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
這里是一個(gè)模擬分?jǐn)?shù)運(yùn)算的例子:Fraction 類。分?jǐn)?shù)運(yùn)算完后要用最大公約數(shù)除分子分母。所以這里也有個(gè)用輾轉(zhuǎn)相除法求最大公約數(shù)的例子。另外在構(gòu)造 Fraction 對象時(shí)如果分母為零將會拋出異常,這也是必要的檢查。
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)
- java求100之內(nèi)的素?cái)?shù)(質(zhì)數(shù))簡單示例
- java使用篩選法求n以內(nèi)的素?cái)?shù)示例(java求素?cái)?shù))
- java求100以內(nèi)的素?cái)?shù)示例分享
- Java列出2到100之間所有素?cái)?shù)的方法
- Java判斷101-200之間有多少個(gè)素?cái)?shù)并輸出
- Java兩個(gè)乒乓球隊(duì)比賽名單問題(判斷素?cái)?shù))
- Java Applet查找素?cái)?shù)小程序代碼實(shí)例
- 利用Java將2019拆分成三個(gè)素?cái)?shù)平方和的方法實(shí)例
相關(guān)文章
idea輸入sout無法自動(dòng)補(bǔ)全System.out.println()的問題
這篇文章主要介紹了idea輸入sout無法自動(dòng)補(bǔ)全System.out.println()的問題,本文給大家分享解決方案,供大家參考,需要的朋友可以參考下2020-07-07
java+testng+selenium的自動(dòng)化測試實(shí)例
這篇文章主要介紹了java+testng+selenium的自動(dòng)化測試實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
如何使用Maven管理項(xiàng)目?Maven管理項(xiàng)目實(shí)例
下面小編就為大家?guī)硪黄绾问褂肕aven管理項(xiàng)目?Maven管理項(xiàng)目實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
Springboot GET和POST請求參數(shù)獲取方式小結(jié)
Spring Boot GET和POST請求參數(shù)獲取是開發(fā)人員經(jīng)常需要解決的問題,本文主要介紹了Springboot GET和POST請求參數(shù)獲取方式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
java解析XML Node與Element的區(qū)別(推薦)
下面小編就為大家分享一篇java解析XML Node與Element的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Java用自定義的類作為HashMap的key值實(shí)例
下面小編就為大家?guī)硪黄狫ava用自定義的類作為HashMap的key值實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
Spring中@EnableScheduling注解的工作原理詳解
這篇文章主要介紹了Spring中@EnableScheduling注解的工作原理詳解,@EnableScheduling是 Spring Framework 提供的一個(gè)注解,用于啟用Spring的定時(shí)任務(wù)(Scheduling)功能,需要的朋友可以參考下2024-01-01

