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()
参考链接:
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号