|
发表于 2020-2-27 23:57:34
|
显示全部楼层
本帖最后由 jackz007 于 2020-2-28 00:13 编辑
y 在被定义的时候已经被初始化为 1 ,整个循环过程中,y 的值本来就是 1,只有在 x % i == 0 成立的时候,才会被修改为 0,不过,修改完立即就 break 退出循环了。换句话说,修改 y 值一定是在 x 不是素数的时候。所以,这个 else 确实属于 "画蛇添足" 的存在,完全可以直接删除。
下面的代码可以打印 1000 以内的所有素数
- #include <stdio.h>
- #include <math.h>
- int main(void)
- {
- int c , i , x , y ;
- for(c = 0 , x = 2 ; x < 1001 ; x ++) {
- for(y = 1 , i = 2 ; i < sqrt(x) + 1 && y ; i ++) if(i < x && ! (x % i)) y = 0 ;
- if(y) {
- if(c) printf("\t") ;
- printf("%3d" , x) ;
- c ++ ;
- }
- }
- }
复制代码
编译、运行实况:
- C:\Bin>g++ -o x x.c
- C:\Bin>x
- 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
- C:\Bin>
复制代码 |
|