思路:先初始化含有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+" "); } } } } }