• 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
    ", 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语言开发环境


  • 相关阅读:
    人工智能实战2019第一次作业_李大
    300道四则运算题目
    build to win读后感
    C# WinForm(简易计算器示例)
    WPF关于Calendar的Style
    winform下实现Label在窗体中从右到左不断循环的动画效果
    WPF 选中datagrid列头中checkbox则全选对应整列checkbox
    Window下android 模拟器SD卡的使用方法
    Linux下在Android模拟器中使用SD 卡的操作步骤
    WPF之VLC流媒体播放
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563557.html
Copyright © 2020-2023  润新知