Skip to content

Instantly share code, notes, and snippets.

@zznq
Created November 4, 2016 19:04
Show Gist options
  • Save zznq/c1f8ea761bb4cf74af809289b9fca5bf to your computer and use it in GitHub Desktop.
Save zznq/c1f8ea761bb4cf74af809289b9fca5bf to your computer and use it in GitHub Desktop.
Generates n number of primes using sieve of eratosthenes. https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
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 169 -> 1009 170 -> 1013
171 -> 1019 172 -> 1021 173 -> 1031 174 -> 1033 175 -> 1039
176 -> 1049 177 -> 1051 178 -> 1061 179 -> 1063 180 -> 1069
181 -> 1087 182 -> 1091 183 -> 1093 184 -> 1097 185 -> 1103
186 -> 1109 187 -> 1117 188 -> 1123 189 -> 1129 190 -> 1151
191 -> 1153 192 -> 1163 193 -> 1171 194 -> 1181 195 -> 1187
196 -> 1193 197 -> 1201 198 -> 1213 199 -> 1217 200 -> 1223
201 -> 1229 202 -> 1231 203 -> 1237 204 -> 1249 205 -> 1259
206 -> 1277 207 -> 1279 208 -> 1283 209 -> 1289 210 -> 1291
211 -> 1297 212 -> 1301 213 -> 1303 214 -> 1307 215 -> 1319
216 -> 1321 217 -> 1327 218 -> 1361 219 -> 1367 220 -> 1373
221 -> 1381 222 -> 1399 223 -> 1409 224 -> 1423 225 -> 1427
226 -> 1429 227 -> 1433 228 -> 1439 229 -> 1447 230 -> 1451
231 -> 1453 232 -> 1459 233 -> 1471 234 -> 1481 235 -> 1483
236 -> 1487 237 -> 1489 238 -> 1493 239 -> 1499 240 -> 1511
241 -> 1523 242 -> 1531 243 -> 1543 244 -> 1549 245 -> 1553
246 -> 1559 247 -> 1567 248 -> 1571 249 -> 1579 250 -> 1583
251 -> 1597 252 -> 1601 253 -> 1607 254 -> 1609 255 -> 1613
256 -> 1619 257 -> 1621 258 -> 1627 259 -> 1637 260 -> 1657
261 -> 1663 262 -> 1667 263 -> 1669 264 -> 1693 265 -> 1697
266 -> 1699 267 -> 1709 268 -> 1721 269 -> 1723 270 -> 1733
271 -> 1741 272 -> 1747 273 -> 1753 274 -> 1759 275 -> 1777
276 -> 1783 277 -> 1787 278 -> 1789 279 -> 1801 280 -> 1811
281 -> 1823 282 -> 1831 283 -> 1847 284 -> 1861 285 -> 1867
286 -> 1871 287 -> 1873 288 -> 1877 289 -> 1879 290 -> 1889
291 -> 1901 292 -> 1907 293 -> 1913 294 -> 1931 295 -> 1933
296 -> 1949 297 -> 1951 298 -> 1973 299 -> 1979 300 -> 1987
301 -> 1993 302 -> 1997 303 -> 1999 304 -> 2003 305 -> 2011
306 -> 2017 307 -> 2027 308 -> 2029 309 -> 2039 310 -> 2053
311 -> 2063 312 -> 2069 313 -> 2081 314 -> 2083 315 -> 2087
316 -> 2089 317 -> 2099 318 -> 2111 319 -> 2113 320 -> 2129
321 -> 2131 322 -> 2137 323 -> 2141 324 -> 2143 325 -> 2153
326 -> 2161 327 -> 2179 328 -> 2203 329 -> 2207 330 -> 2213
331 -> 2221 332 -> 2237 333 -> 2239 334 -> 2243 335 -> 2251
336 -> 2267 337 -> 2269 338 -> 2273 339 -> 2281 340 -> 2287
341 -> 2293 342 -> 2297 343 -> 2309 344 -> 2311 345 -> 2333
346 -> 2339 347 -> 2341 348 -> 2347 349 -> 2351 350 -> 2357
351 -> 2371 352 -> 2377 353 -> 2381 354 -> 2383 355 -> 2389
356 -> 2393 357 -> 2399 358 -> 2411 359 -> 2417 360 -> 2423
361 -> 2437 362 -> 2441 363 -> 2447 364 -> 2459 365 -> 2467
366 -> 2473 367 -> 2477 368 -> 2503 369 -> 2521 370 -> 2531
371 -> 2539 372 -> 2543 373 -> 2549 374 -> 2551 375 -> 2557
376 -> 2579 377 -> 2591 378 -> 2593 379 -> 2609 380 -> 2617
381 -> 2621 382 -> 2633 383 -> 2647 384 -> 2657 385 -> 2659
386 -> 2663 387 -> 2671 388 -> 2677 389 -> 2683 390 -> 2687
391 -> 2689 392 -> 2693 393 -> 2699 394 -> 2707 395 -> 2711
396 -> 2713 397 -> 2719 398 -> 2729 399 -> 2731 400 -> 2741
401 -> 2749 402 -> 2753 403 -> 2767 404 -> 2777 405 -> 2789
406 -> 2791 407 -> 2797 408 -> 2801 409 -> 2803 410 -> 2819
411 -> 2833 412 -> 2837 413 -> 2843 414 -> 2851 415 -> 2857
416 -> 2861 417 -> 2879 418 -> 2887 419 -> 2897 420 -> 2903
421 -> 2909 422 -> 2917 423 -> 2927 424 -> 2939 425 -> 2953
426 -> 2957 427 -> 2963 428 -> 2969 429 -> 2971 430 -> 2999
431 -> 3001 432 -> 3011 433 -> 3019 434 -> 3023 435 -> 3037
436 -> 3041 437 -> 3049 438 -> 3061 439 -> 3067 440 -> 3079
441 -> 3083 442 -> 3089 443 -> 3109 444 -> 3119 445 -> 3121
446 -> 3137 447 -> 3163 448 -> 3167 449 -> 3169 450 -> 3181
451 -> 3187 452 -> 3191 453 -> 3203 454 -> 3209 455 -> 3217
456 -> 3221 457 -> 3229 458 -> 3251 459 -> 3253 460 -> 3257
461 -> 3259 462 -> 3271 463 -> 3299 464 -> 3301 465 -> 3307
466 -> 3313 467 -> 3319 468 -> 3323 469 -> 3329 470 -> 3331
471 -> 3343 472 -> 3347 473 -> 3359 474 -> 3361 475 -> 3371
476 -> 3373 477 -> 3389 478 -> 3391 479 -> 3407 480 -> 3413
481 -> 3433 482 -> 3449 483 -> 3457 484 -> 3461 485 -> 3463
486 -> 3467 487 -> 3469 488 -> 3491 489 -> 3499 490 -> 3511
491 -> 3517 492 -> 3527 493 -> 3529 494 -> 3533 495 -> 3539
496 -> 3541 497 -> 3547 498 -> 3557 499 -> 3559 500 -> 3571
501 -> 3581 502 -> 3583 503 -> 3593 504 -> 3607 505 -> 3613
506 -> 3617 507 -> 3623 508 -> 3631 509 -> 3637 510 -> 3643
511 -> 3659 512 -> 3671 513 -> 3673 514 -> 3677 515 -> 3691
516 -> 3697 517 -> 3701 518 -> 3709 519 -> 3719 520 -> 3727
521 -> 3733 522 -> 3739 523 -> 3761 524 -> 3767 525 -> 3769
526 -> 3779 527 -> 3793 528 -> 3797 529 -> 3803 530 -> 3821
531 -> 3823 532 -> 3833 533 -> 3847 534 -> 3851 535 -> 3853
536 -> 3863 537 -> 3877 538 -> 3881 539 -> 3889 540 -> 3907
541 -> 3911 542 -> 3917 543 -> 3919 544 -> 3923 545 -> 3929
546 -> 3931 547 -> 3943 548 -> 3947 549 -> 3967 550 -> 3989
551 -> 4001 552 -> 4003 553 -> 4007 554 -> 4013 555 -> 4019
556 -> 4021 557 -> 4027 558 -> 4049 559 -> 4051 560 -> 4057
561 -> 4073 562 -> 4079 563 -> 4091 564 -> 4093 565 -> 4099
566 -> 4111 567 -> 4127 568 -> 4129 569 -> 4133 570 -> 4139
571 -> 4153 572 -> 4157 573 -> 4159 574 -> 4177 575 -> 4201
576 -> 4211 577 -> 4217 578 -> 4219 579 -> 4229 580 -> 4231
581 -> 4241 582 -> 4243 583 -> 4253 584 -> 4259 585 -> 4261
586 -> 4271 587 -> 4273 588 -> 4283 589 -> 4289 590 -> 4297
591 -> 4327 592 -> 4337 593 -> 4339 594 -> 4349 595 -> 4357
596 -> 4363 597 -> 4373 598 -> 4391 599 -> 4397 600 -> 4409
601 -> 4421 602 -> 4423 603 -> 4441 604 -> 4447 605 -> 4451
606 -> 4457 607 -> 4463 608 -> 4481 609 -> 4483 610 -> 4493
611 -> 4507 612 -> 4513 613 -> 4517 614 -> 4519 615 -> 4523
616 -> 4547 617 -> 4549 618 -> 4561 619 -> 4567 620 -> 4583
621 -> 4591 622 -> 4597 623 -> 4603 624 -> 4621 625 -> 4637
626 -> 4639 627 -> 4643 628 -> 4649 629 -> 4651 630 -> 4657
631 -> 4663 632 -> 4673 633 -> 4679 634 -> 4691 635 -> 4703
636 -> 4721 637 -> 4723 638 -> 4729 639 -> 4733 640 -> 4751
641 -> 4759 642 -> 4783 643 -> 4787 644 -> 4789 645 -> 4793
646 -> 4799 647 -> 4801 648 -> 4813 649 -> 4817 650 -> 4831
651 -> 4861 652 -> 4871 653 -> 4877 654 -> 4889 655 -> 4903
656 -> 4909 657 -> 4919 658 -> 4931 659 -> 4933 660 -> 4937
661 -> 4943 662 -> 4951 663 -> 4957 664 -> 4967 665 -> 4969
666 -> 4973 667 -> 4987 668 -> 4993 669 -> 4999 670 -> 5003
671 -> 5009 672 -> 5011 673 -> 5021 674 -> 5023 675 -> 5039
676 -> 5051 677 -> 5059 678 -> 5077 679 -> 5081 680 -> 5087
681 -> 5099 682 -> 5101 683 -> 5107 684 -> 5113 685 -> 5119
686 -> 5147 687 -> 5153 688 -> 5167 689 -> 5171 690 -> 5179
691 -> 5189 692 -> 5197 693 -> 5209 694 -> 5227 695 -> 5231
696 -> 5233 697 -> 5237 698 -> 5261 699 -> 5273 700 -> 5279
701 -> 5281 702 -> 5297 703 -> 5303 704 -> 5309 705 -> 5323
706 -> 5333 707 -> 5347 708 -> 5351 709 -> 5381 710 -> 5387
711 -> 5393 712 -> 5399 713 -> 5407 714 -> 5413 715 -> 5417
716 -> 5419 717 -> 5431 718 -> 5437 719 -> 5441 720 -> 5443
721 -> 5449 722 -> 5471 723 -> 5477 724 -> 5479 725 -> 5483
726 -> 5501 727 -> 5503 728 -> 5507 729 -> 5519 730 -> 5521
731 -> 5527 732 -> 5531 733 -> 5557 734 -> 5563 735 -> 5569
736 -> 5573 737 -> 5581 738 -> 5591 739 -> 5623 740 -> 5639
741 -> 5641 742 -> 5647 743 -> 5651 744 -> 5653 745 -> 5657
746 -> 5659 747 -> 5669 748 -> 5683 749 -> 5689 750 -> 5693
751 -> 5701 752 -> 5711 753 -> 5717 754 -> 5737 755 -> 5741
756 -> 5743 757 -> 5749 758 -> 5779 759 -> 5783 760 -> 5791
761 -> 5801 762 -> 5807 763 -> 5813 764 -> 5821 765 -> 5827
766 -> 5839 767 -> 5843 768 -> 5849 769 -> 5851 770 -> 5857
771 -> 5861 772 -> 5867 773 -> 5869 774 -> 5879 775 -> 5881
776 -> 5897 777 -> 5903 778 -> 5923 779 -> 5927 780 -> 5939
781 -> 5953 782 -> 5981 783 -> 5987 784 -> 6007 785 -> 6011
786 -> 6029 787 -> 6037 788 -> 6043 789 -> 6047 790 -> 6053
791 -> 6067 792 -> 6073 793 -> 6079 794 -> 6089 795 -> 6091
796 -> 6101 797 -> 6113 798 -> 6121 799 -> 6131 800 -> 6133
801 -> 6143 802 -> 6151 803 -> 6163 804 -> 6173 805 -> 6197
806 -> 6199 807 -> 6203 808 -> 6211 809 -> 6217 810 -> 6221
811 -> 6229 812 -> 6247 813 -> 6257 814 -> 6263 815 -> 6269
816 -> 6271 817 -> 6277 818 -> 6287 819 -> 6299 820 -> 6301
821 -> 6311 822 -> 6317 823 -> 6323 824 -> 6329 825 -> 6337
826 -> 6343 827 -> 6353 828 -> 6359 829 -> 6361 830 -> 6367
831 -> 6373 832 -> 6379 833 -> 6389 834 -> 6397 835 -> 6421
836 -> 6427 837 -> 6449 838 -> 6451 839 -> 6469 840 -> 6473
841 -> 6481 842 -> 6491 843 -> 6521 844 -> 6529 845 -> 6547
846 -> 6551 847 -> 6553 848 -> 6563 849 -> 6569 850 -> 6571
851 -> 6577 852 -> 6581 853 -> 6599 854 -> 6607 855 -> 6619
856 -> 6637 857 -> 6653 858 -> 6659 859 -> 6661 860 -> 6673
861 -> 6679 862 -> 6689 863 -> 6691 864 -> 6701 865 -> 6703
866 -> 6709 867 -> 6719 868 -> 6733 869 -> 6737 870 -> 6761
871 -> 6763 872 -> 6779 873 -> 6781 874 -> 6791 875 -> 6793
876 -> 6803 877 -> 6823 878 -> 6827 879 -> 6829 880 -> 6833
881 -> 6841 882 -> 6857 883 -> 6863 884 -> 6869 885 -> 6871
886 -> 6883 887 -> 6899 888 -> 6907 889 -> 6911 890 -> 6917
891 -> 6947 892 -> 6949 893 -> 6959 894 -> 6961 895 -> 6967
896 -> 6971 897 -> 6977 898 -> 6983 899 -> 6991 900 -> 6997
901 -> 7001 902 -> 7013 903 -> 7019 904 -> 7027 905 -> 7039
906 -> 7043 907 -> 7057 908 -> 7069 909 -> 7079 910 -> 7103
911 -> 7109 912 -> 7121 913 -> 7127 914 -> 7129 915 -> 7151
916 -> 7159 917 -> 7177 918 -> 7187 919 -> 7193 920 -> 7207
921 -> 7211 922 -> 7213 923 -> 7219 924 -> 7229 925 -> 7237
926 -> 7243 927 -> 7247 928 -> 7253 929 -> 7283 930 -> 7297
931 -> 7307 932 -> 7309 933 -> 7321 934 -> 7331 935 -> 7333
936 -> 7349 937 -> 7351 938 -> 7369 939 -> 7393 940 -> 7411
941 -> 7417 942 -> 7433 943 -> 7451 944 -> 7457 945 -> 7459
946 -> 7477 947 -> 7481 948 -> 7487 949 -> 7489 950 -> 7499
951 -> 7507 952 -> 7517 953 -> 7523 954 -> 7529 955 -> 7537
956 -> 7541 957 -> 7547 958 -> 7549 959 -> 7559 960 -> 7561
961 -> 7573 962 -> 7577 963 -> 7583 964 -> 7589 965 -> 7591
966 -> 7603 967 -> 7607 968 -> 7621 969 -> 7639 970 -> 7643
971 -> 7649 972 -> 7669 973 -> 7673 974 -> 7681 975 -> 7687
976 -> 7691 977 -> 7699 978 -> 7703 979 -> 7717 980 -> 7723
981 -> 7727 982 -> 7741 983 -> 7753 984 -> 7757 985 -> 7759
986 -> 7789 987 -> 7793 988 -> 7817 989 -> 7823 990 -> 7829
991 -> 7841 992 -> 7853 993 -> 7867 994 -> 7873 995 -> 7877
996 -> 7879 997 -> 7883 998 -> 7901 999 -> 7907 1000 -> 7919
//Generates n number of primes using sieve of eratosthenes. https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
package main
import "fmt"
func integers(from int) chan int {
c := make(chan int)
go func() {
for i := from; ; i++ {
c <- i
}
}()
return c
}
func filter(in <-chan int, prime int) chan int {
c := make(chan int)
go func() {
for {
i := <-in
if i%prime != 0 {
c <- i
}
}
}()
return c
}
func main() {
int_ch := integers(2)
for i := 1; i <= 1000; i++ {
prime := <-int_ch
if i%5 == 0 {
fmt.Printf("%4d -> %4d\n", i, prime)
} else {
fmt.Printf("%4d -> %4d\t\t", i, prime)
}
filtered_ch := filter(int_ch, prime)
int_ch = filtered_ch
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment