Fork me on GitHub

求一组数字中的素数

思路:先初始化含有100个元素的数组,并且将数组中的每个元素的值都设置为1。操作的元素会从索引2开始依次检查后续的数组索引,先要查看索引对应的元素值是0还是1,

如果值是1就接着查看该索引是否是2的倍数,如果索引是2的倍数,就将索引上的值设为0,检查完所有的数组索引后,会接着移动到索引3,重复相同的操作,如此一直反复下去。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 素数问题求解
{
    class CArry
    {
        private int[] arr;
        private int upper;
        private int _numElements;
        //构造函数
        public CArry(int size)
        {
            arr=new int[size];
            upper = size - 1;
            _numElements = 0;
        }
        //插入操作
        public void Insert(int item)
        {
            arr[_numElements] = item;
            _numElements++;
        }
        //显示元素
        public void DisplayElements()
        {
            for (int i = 0; i <= upper;i++ )
            {
                Console.Write(arr[i]);
            }
        }
        //判断是否是素数
        #region
        //这种方法来判断素数很有趣,有趣的是我们通常用到的是数组中的值,而这种方法用的却是索引的值
        //给我另一种思考方式的洗礼
        #endregion
        public void GenPrimes()
        {
            for (int outer = 2; outer <= arr.GetUpperBound(0);outer++ )
            {
                for (int inner = outer + 1; inner <= arr.GetUpperBound(0);inner++ )
                {
                    if (arr[inner] == 1)
                    {
                        if((inner%outer)==0)
                        {
                            arr[inner] = 0;
                        }
                    }
                }
            }
        }
        //显示素数
        public void ShowPrimes()
        {
            for (int i = 2; i <= arr.GetUpperBound(0); i++)
            {
                if (arr[i] == 1)
                {
                    Console.Write(i+"   ");
                }
            }

        }
    }
}

 

posted @ 2013-07-17 09:23  种花生的读书人  阅读(253)  评论(0编辑  收藏  举报

该博客仅作为记录笔记,转载随意