Java求勾股数
最近有点时间又仔细温习了一下Java的算法,收益颇丰,呵呵,写在博客里供自己以后随时查看。
View Code
1
//
想到3 4 5; 4 3 5; 5 4 3; 其实是一样的所以有了一下的推理过程
2
3 // 递推过程
4
5 // 1 1 2; 1 1 3 ... 1 1 100;
6
7 // 1 2 3; 1 2 4 ... 1 2 100;
8
9 // 1 99 100;
10
11 // 2 2 3; 2 2 4 ... 2 2 100;
12
13 // 99 99 100;
14
15 public class Source {
16
17 public static void main(String[] args) {
18
19 Gougu.getGouguNum(100);
20
21 }
22
23 }
24
25 // 勾股数的使用
26
27 class Gougu{
28
29 // 通过递推来查找勾股数
30
31 public static final void getGouguNum( int maxnum){
32
33 //
34
35 for( int i = 1; i < maxnum; i++){
36
37 for( int j = i; j < maxnum; j++){
38
39 for( int n = j + 1; n < maxnum; n++){
40
41 if((i*i+j*j)==n*n){
42
43 System.out.println(" "+i+" "+j+" "+n);
44
45 }
46
47 }
48
49 }
50
51 }
52
53 }
54
55 }
2
3 // 递推过程
4
5 // 1 1 2; 1 1 3 ... 1 1 100;
6
7 // 1 2 3; 1 2 4 ... 1 2 100;
8
9 // 1 99 100;
10
11 // 2 2 3; 2 2 4 ... 2 2 100;
12
13 // 99 99 100;
14
15 public class Source {
16
17 public static void main(String[] args) {
18
19 Gougu.getGouguNum(100);
20
21 }
22
23 }
24
25 // 勾股数的使用
26
27 class Gougu{
28
29 // 通过递推来查找勾股数
30
31 public static final void getGouguNum( int maxnum){
32
33 //
34
35 for( int i = 1; i < maxnum; i++){
36
37 for( int j = i; j < maxnum; j++){
38
39 for( int n = j + 1; n < maxnum; n++){
40
41 if((i*i+j*j)==n*n){
42
43 System.out.println(" "+i+" "+j+" "+n);
44
45 }
46
47 }
48
49 }
50
51 }
52
53 }
54
55 }
计算结果:
3 4 5
5 12 13
6 8 10
7 24 25
8 15 17
9 12 15
9 40 41
10 24 26
11 60 61
12 16 20
12 35 37
13 84 85
14 48 50
15 20 25
15 36 39
16 30 34
16 63 65
18 24 30
18 80 82
20 21 29
20 48 52
21 28 35
21 72 75
24 32 40
24 45 51
24 70 74
25 60 65
27 36 45
28 45 53
30 40 50
30 72 78
32 60 68
33 44 55
33 56 65
35 84 91
36 48 60
36 77 85
39 52 65
39 80 89
40 42 58
40 75 85
42 56 70
45 60 75
48 55 73
48 64 80
51 68 85
54 72 90
57 76 95
60 63 87
65 72 97