第六章 BitArray类

用常规数组来解决查找素数的问题:(假如要查找<=1024的素数)

  一、定义一普通数组,数组容量1024;并将该数组内所有值置1;

  二、操作数从索引2(因为2是第一个素数)开始依次检查每个后续的数组索引,先查看该索引对应的元素值是否为1;若为1,那么就检查该索引是否是2的倍数;

  三、若第二步中,索引是2的倍数,那么就把该索引的数值设为0;

  四、检查完所有数组索引后,接着移动到索引3,重复相同的操作。

方法代码:

 
代码
    
      
public void GenPrimes( int [] arr)
{
for ( int outer = 2 ; outer <= arr.GetUpperBound( 0 ); outer ++ )
{
for ( int inner = outer + 1 ; inner <= arr.GetUpperBound( 0 ); inner ++ )
{
if (arr[inner] == 1 ) // 该索引对应的值是否为1
if ((inner % outer) == 0 ) // 若上面的值为1,则判断该索引自身能否被2,3整除,若能整除,则将该索引对应的值置0
arr[inner] = 0 ;
}
}
}

 

显示素数:

 

代码
   
     
public void ShowPrimes( int [] arr)
{
for ( int i = 2 ; i <= arr.GetUpperBound( 0 ); i ++ )
if (arr[i] == 1 )
Console.Write(i
+ " " ); // 对应的索引值就是素数
}

BitArray类实现上述查找方法还未掌握,继续看。

你可能感兴趣的:(array)