Go语言实现的素数筛选程序

通过这个例子可以了解数组的定义及其使用、切片的定义及其使用。同时,也可以了解变量的定义,各种控制语句的使用,类型的转换等。

这里给出的程序,计算1000以内的所有素数,输出的每一行是序号+素数。


Go语言程序:

// prime project main.go
package main

import (
	"fmt"
	"math"
)

const N int = 1000

var pflag [N + 1]bool
var prime []int

func esieve(n int) {
	pflag[2] = true
	for i := 3; i <= N; i += 2 {
		pflag[i] = true
	}

	end := int(math.Sqrt(float64(n)))

	for i := 3; i <= end; i += 2 {
		step := i + i
		if pflag[i] {
			j := i + step
			for j <= n {
				pflag[j] = false
				j += step
			}
		}
	}

	prime = append(prime, 1)
	for i := 2; i <= N; i++ {
		if pflag[i] {
			prime = append(prime, i)
		}
	}
}

func main() {
	esieve(N)

	for i := range prime {
		fmt.Printf("%d: %d\n", i, prime[i])
	}
}


程序运行结果:

0: 1
1: 2
2: 3
3: 5
4: 7
5: 11
6: 13
7: 17
8: 19
9: 23
10: 29
11: 31
12: 37
13: 41
14: 43
15: 47
16: 53
17: 59
18: 61
19: 67
20: 71
21: 73
22: 79
23: 83
24: 89
25: 97
26: 101
27: 103
28: 107
29: 109
30: 113
31: 127
32: 131
33: 137
34: 139
35: 149
36: 151
37: 157
38: 163
39: 167
40: 173
41: 179
42: 181
43: 191
44: 193
45: 197
46: 199
47: 211
48: 223
49: 227
50: 229
51: 233
52: 239
53: 241
54: 251
55: 257
56: 263
57: 269
58: 271
59: 277
60: 281
61: 283
62: 293
63: 307
64: 311
65: 313
66: 317
67: 331
68: 337
69: 347
70: 349
71: 353
72: 359
73: 367
74: 373
75: 379
76: 383
77: 389
78: 397
79: 401
80: 409
81: 419
82: 421
83: 431
84: 433
85: 439
86: 443
87: 449
88: 457
89: 461
90: 463
91: 467
92: 479
93: 487
94: 491
95: 499
96: 503
97: 509
98: 521
99: 523
100: 541
101: 547
102: 557
103: 563
104: 569
105: 571
106: 577
107: 587
108: 593
109: 599
110: 601
111: 607
112: 613
113: 617
114: 619
115: 631
116: 641
117: 643
118: 647
119: 653
120: 659
121: 661
122: 673
123: 677
124: 683
125: 691
126: 701
127: 709
128: 719
129: 727
130: 733
131: 739
132: 743
133: 751
134: 757
135: 761
136: 769
137: 773
138: 787
139: 797
140: 809
141: 811
142: 821
143: 823
144: 827
145: 829
146: 839
147: 853
148: 857
149: 859
150: 863
151: 877
152: 881
153: 883
154: 887
155: 907
156: 911
157: 919
158: 929
159: 937
160: 941
161: 947
162: 953
163: 967
164: 971
165: 977
166: 983
167: 991
168: 997

程序说明(本程序包含以下要点)

1.常量说明

2.全局变量

3.数组和切片

4.控制语句:if语句和for语句

5.变量定义:用赋值运算符号":="(一般赋值用"=",复合赋值运算符"+="等也是可以使用的)

6.数学函数:在库math中,例如函数math.Sqrt(),需要注意调用方式

7.类型转换:似乎需要强制的类型转换,例如:"end := int(math.Sqrt(float64(n)))"

8.增加切片元素,需要使用函数append()


参考链接:

1.Ubuntu安装Go语言环境

2.Ubuntu构筑LiteIDE的Go语言开发环境


posted on 2017-07-30 00:04  海岛Blog  阅读(226)  评论(0编辑  收藏  举报

导航