课程详情 学校简介 学校地址 网上报名
关键词:西安西科软件实训中心 西安IT培训学校 西安java软件工程师培训
西安java培训--软件工程师培训/西科软件培训学校
这篇文章主要介绍了Java求素数和最大公约数的简单代码示例,其中作者创建的Fraction类可以用来进行各种分数运算,需要的朋友可以参考下
Java小例子:求素数
素数(质数)指的是不能被分解的数,除了 1 和它本身之外就没有其它数能够整除。这里是一个小例子,说明如何求取十万以内的所有素数。
素数的分布没有规律可言,所以要检验一个数是不是素数,就必须将它同所有小于它的数作除法。不过有一个简便的方法,就是不需要检验所有小于它的数,而只要检验所有小于它的素数。如果所有小于它的素数都不能将其整除,那么它就是素数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
public class Primes {
public static void main(String[] args) {
// 求素数
Listprimes = getPrimes(100000);
// 输出结果
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 以内的所有素数
*
* @param n 范围
*
* @return n 以内的所有素数
*/
private static ListgetPrimes(int n) {
Listresult = new ArrayList();
result.add(2);
for (int i = 3; i <= n; i += 2) {
if (!divisible(i, result)) {
result.add(i);
}
}
return result;
}
/**
* 判断 n 是否能被整除
*
* @param n 要判断的数字
* @param primes 包含素数的列表
*
* @return 如果 n 能被 primes 中任何一个整除,则返回 true。
*/
private static boolean divisible(int n, Listprimes) {
for (Integer prime : primes) {
if (n % prime == 0) {
return true;
}
}
return false;
}
}
|
Java小例子:模拟分数的类 Fraction
这里是一个模拟分数运算的例子:Fraction 类。分数运算完后要用最大公约数除分子分母。所以这里也有个用辗转相除法求最大公约数的例子。另外在构造 Fraction 对象时如果分母为零将会抛出异常,这也是必要的检查。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
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() + ")");
}
}
// 分数
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;
}
// 分子分母同除以最大公约数
private Fraction shrink() {
int maxCommonDivisor = getMaxCommonDivisor(this.denominator, this.numerator);
this.numerator /= maxCommonDivisor;
this.denominator /= maxCommonDivisor;
return this;
}
// 辗转相除法求最大公约数
private int getMaxCommonDivisor(int a, int b) {
int mod = a % b;
if (mod == 0) {
return b;
} else {
return getMaxCommonDivisor(b, mod);
}
}
// 分数加法
public Fraction add(Fraction that) {
return new Fraction(this.numerator * that.denominator + this.denominator * that.numerator,
this.denominator * that.denominator);
}
// 分数减法
public Fraction minus(Fraction that) {
return new Fraction(this.numerator * that.denominator - this.denominator * that.numerator,
this.denominator * that.denominator);
}
// 分数乘法
public Fraction multiply(Fraction that) {
return new Fraction(this.numerator * that.numerator,
this.denominator * that.denominator);
}
// 分数除法
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);
}
}
|
运行输出:
1
2
3
4
|
{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培训--软件工程师培训/西科软件培训学校
西科软件(实训中心)是西安科技大学高新学院培养高素质移动互联网实用型人才的专业IT职业教育培训机构。是国家IT精英人才孵化基地,西安软件园移动互联网联盟指定的IT人才输送基地。 西科软件与西安科技大学高新学院同属西科集团,实训基地设在西安科技大学高新学院 ,在资源共享上占有绝对优势,学院坐落在西部大学城,占地800余亩,60%以上绿化,是一所现代化园林式院校,环境优美。 西科软件件实训中心“因材施教”,根据学员的不同类型进行有针对性的教授,实行小班“一人一机”教学,2:8的授课方式,20%理论知识学习时间,80%的上机操作时间,及时将所学专业付诸于实践操作中,能更好的巩固了所学专业,真正的将专业知识转化为专业技术,完全秉承了“技术实训”的教育原则。 扎实的动手操作能力,丰富的项目实训经验,提前体验了软件企业项目操作流程,使学生与企业可以无缝接轨,自然过渡到企业项目开发中去。同时西科软件为企业按需定制、培养各类IT人才,及时、长期地提供企业所急需的高素质软件开发及产品运营人才,协助解决企业人才储备不足的后顾之忧,成为学生和企业之间无缝链接的桥梁。西科软件具备优秀的课程研发团队、稳定的讲师团队和完善的就业保障体系。 实战为主的授课模式、企业委派的一线师资及精良的教学硬件设施,多方位保障学员的学习和教学质量;与数十家大中型软件企业签订的“软件人才输送计划”,充分保障了学员的就业空间。真正做到了以就业为目的,以专业为保障的服务宗旨。 “一站式”就业模式,更加直接有效地解决了软件行业的人才短缺问题,并且为广大有志从事软件开发行业相关人员提供了良好的机会与平台。
学校名称:西安西科软件实训中心
固定电话:
授课地址:海星城市广场 预约参观