用可变个数的ArrayList求素数

ArrayList可以充当一个可变的容器,有时候方便处理未知大小的一组数据。

 1using System;
 2using System.Collections;  //为了使用ArrayList
 3class prime
 4{
 5    
 6    public static ArrayList arr=new ArrayList();    
 7    public static void AddPrime(int arg){
 8        arr.Add(2);        
 9        for (int i=3;i <= arg ;i++)
10        {
11            if(IsPrime(i)){
12                arr.Add(i);
13            }
            
14        }

15        
16
17    }

18    public static bool IsPrime(int arg){        
19        int i=0;
20        
21        while(Convert.ToInt16(arr[i]) * Convert.ToInt16(arr[i]) <=arg){
22            if(arg % Convert.ToInt32(arr[i])==0return false;
23            i++;
24        }

25        
26        //下面的方法完全正确,不过我决定尝试下ArrayList方法。
27        /*
28        foreach (int i in arr)
29        {    
30            if(i*i <= arg){                
31            if(arg % i==0) return false;
32            }else{
33            break;
34            }        
35            
36        }
37        */

38        return true;
39    }

40    public static void Main(){        
41        AddPrime(50);        
42        Console.WriteLine("50以内的素数有:");
43        foreach(int i in arr){
44            Console.Write("{0} ",i);
45        }
    
46            Console.WriteLine();
47            Console.WriteLine("------------------------------------");
48            Console.WriteLine("以下是ArrayList 对象的演示。");
49            Console.Write("arr[1]:{0}  ------- ",arr[1]); //这个打印不规范,arr[1] 为Object,但是仍然能够输出值。
50            Console.Write("Convert.ToInt32(arr[1])*Convert.ToInt32(arr[1]):{0} ",Convert.ToInt32(arr[1])*Convert.ToInt32(arr[1])); //这个打印才是正确做法。
51            
52            
53    }

54}

55
代码下载:/Files/x116/prime.rar
posted @ 2008-01-14 17:31  普若伽门  阅读(203)  评论(0编辑  收藏  举报