1110: 1到1000内的质数

文件提交:无需freopen 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判 命题人:
提交:2 解决:0

题目描述

问题:求出1-1000内的所有质数,并按每行10个输出。
判断一个数x是否为质数时,我们曾经用2至sqrt(x)去试除;观察可知:
如果4是x的约数,那么2也是x的约数;只需要考虑范围内的质数是否为x的约数即可;
2是质数,4(2*2)不是质数,6(2*3)也不是质数,…,2的倍数都不是质数;任何一个质数的倍数都不是质数。

输入

输出

1-1000内的质数

样例输出

2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109 113
127 131 137 139 149 151 157 163 167 173
179 181 191 193 197 199 211 223 227 229
233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349
353 359 367 373 379 383 389 397 401 409
419 421 431 433 439 443 449 457 461 463
467 479 487 491 499 503 509 521 523 541
547 557 563 569 571 577 587 593 599 601
607 613 617 619 631 641 643 647 653 659
661 673 677 683 691 701 709 719 727 733
739 743 751 757 761 769 773 787 797 809
811 821 823 827 829 839 853 857 859 863
877 881 883 887 907 911 919 929 937 941
947 953 967 971 977 983 991 997

提示

(1) 用数组a记录1-1000的每个数是否为质数。a[i]为true表示i是质数;a[i]为false表示i不是质数。
(2) 初始时,我们认为2-1000的每个数都是质数(即都为true);a[1]为false。 
(3) 令变量i从2开始考虑,所有i的倍数都不是质数;循环变量j枚举所有i的倍数(小于等于1000),对应的a[j]置为false。
(4) 向后找到下一个质数i(a[i]仍然为true),重复上述过程。 

思考:如何按每行10个输出?

来源/分类