java语言的科学与艺术-编程练习11.X

 1 //使用Eratoshene滤网来生成2~1000之间的素数。
 2 import acm.program.*;
 3 public class Eratosthene extends ConsoleProgram {
 4     public void run(){
 5         prime = new int[999];
 6         for(int i = 0; i < 999; i++) {
 7             prime[i] = i + 2;
 8         }
 9         int j = 0;
10         int num =0;
11         while(true){
12             int sign = prime[j];
13             for(int i = j + 1; i < 999; i++) {
14                 if(prime[i] % sign == 0) prime[i] = 0;
15             }
16             while(true){
17                 j++;
18                 if(prime[j] != 0 || j > 997) break;
19             }
20             if(prime[j] == 0) break;
21         }
22         //输出素数
23         for(int i = 0; i < 999; i++) {
24             if(prime[i] != 0) {
25                 print(prime[i] + " , ");
26                 num++;
27             }
28         }
29         println("the number of the primes " + num);
30     }
31     // private instance variables
32     private int[] prime;
33 }

 

posted on 2013-01-03 14:36  mybluecode  阅读(203)  评论(0编辑  收藏  举报