//蛙蛙推荐:演示索引指示器的用法(C#)

原创 2004年07月17日 13:40:00

//蛙蛙推荐:演示索引指示器的用法(C#)
// 本演示测试连续自然数中的质数的个数,质数就是除了1和它本身能整除为,不能被别人整除了.
//  不好意思,小时候数学学的不好,关于怎么判断质数的算法我没有理解透澈呢,不过这不影响你了解索引指示器的建立和使用,大家谁懂,麻烦指点一下哦
//  注释比较多,如果去除所有注释,代码还是很紧凑的,没办法,现在就得做一些很基础的练习.
using System; //导入命名空间

class BitArray //定义一个类BitArray
{
   int[] bits; //定义一个int型数组
   int length; //定义一个int变量,注意:没有修饰符的变量默认是私有变量
   public BitArray(int length) { //定义这个类的构造函数,在C#中用类的同名函数来做构造函数,在VB.NET用new关键字定义
      if (length<0) throw new ArgumentException(); //如果长度小于0的话抛出一个ArgumentException异常
      bits=new int[((length-1)>>5)+1]; //给bits数组赋值,并把length减去1向右移位5最后再加1
      this.length=length; //用参数length为私有变量length赋值,注意this关键字的用法,这里表示正在引用的类,也就是class BitArray,this还有别的用法
   }

   public int Length { //设置一个只读属性,
      get { return length; } //属性返回私有变量length的值,注意大小写哦,呱呱.
   }

   public bool this[int index] { //构建一个可读写索引指示器
      get {                      //设置get指示器
         if (index<0 || index>=length) {  //如果传递的索引值小于0或者大于数组边界的话引发一个IndexOutOfRangeException异常
            throw new IndexOutOfRangeException();
         }
         return (bits[index>>5]&1<<index)!=0; //,如果是质数就返回1,如果不是质数就返回1,不要问我这个位算法和质数的关系哦,我可不懂位和汇编等底层的东西.
      }
      set {                     //设置set指示器
         if (index<0 || index>=length) {   //和get访问起一样,先检查输入的索引是否在合适的范围内,在实际编程中应该也有责任做这些潜在的错误处理,这能增强程序的健壮性
            throw new IndexOutOfRangeException();
         }
         if (value) {
            bits[index>>5] |= 1<<index;
         }
         else {
            bits[index>>5] &= ~(1<<index);
         }
      }
   }
}

class Sample   //创建一个Sample类
{
   static int Count(int max) {  //定义一个静态的int类型的方法
      BitArray flags=new BitArray(max+1);  //实例化BitArray类,并用max参数来初始化
      int count=1;  //定义一个int类型的count变量,并初始化为1
      for (int i=2;i<=max;i++) { //定义一个循环,范围是从2-max,因为每个数肯定能整除1,所以略过.
         if (!flags[i]) {  //调用BitArray类的实例flags的索引指示器,
            for (int j=i*2;j<=max;j+=i) flags[j]=true; //不懂
            count++; //每循环一次,让count加1,
         }
      }
      return count; //返回count
   }

   static void Main(string[] args) { //设置主函数,注意数组作为参数的用法
      int max=int.Parse(args[0]); //获取数组参数的第一个值
      int count=Count(max); //调用Count方法来处理max,
      Console.WriteLine("从1到{0}之间共有{1}个质数",max,count); //向屏幕打印处理结果.
   }
}
 

蛙蛙推荐:如何编写高质量的python程序

原文:http://www.cnblogs.com/onlytiancai/archive/2012/09/11/How_to_write_high-quality_python_program.ht...
  • cjh6311882
  • cjh6311882
  • 2013年03月25日 00:00
  • 1359

蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库

转载原文:蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库 蛙蛙推荐:利用WMI脚本批量恢复SQLSERVER数据库 问题提出 蛙蛙求助:以编程的方式还原sq...
  • njw1028
  • njw1028
  • 2014年08月26日 09:46
  • 358

C#学习之属性和索引指示器

属性这个词在C++中确实没有用到过,
  • xyjawq1
  • xyjawq1
  • 2014年05月09日 10:34
  • 330

蛙宝任务检索

# coding=utf-8 import requests import re from lxml import etree import time import pandas as pd from...
  • olivesun88
  • olivesun88
  • 2017年04月25日 19:08
  • 210

《蛙》短评及书摘

单独二胎政策落定,莫言的长篇小说《蛙》我也看完了, 《蛙》的意义不仅是对计划生育政策得失的某种评价和反思,更包含了如何将姑姑和蝌蚪在六十年的岁月中所获得的历史经验转化为文学形式,使之成为可感形式问题的...
  • pan_tian
  • pan_tian
  • 2013年11月20日 13:50
  • 2099

青草池塘处处蛙

1.睡觉 春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。 2.发呆 人闲桂花落,夜静春山空。月出惊山鸟,时鸣春涧中。 3.喝酒 绿蚁新醅酒,红泥小火炉,晚来天欲雪,能饮一杯...
  • zuojiansizuop
  • zuojiansizuop
  • 2014年08月25日 11:53
  • 8

蛙步学排序算法之一 - 冒泡排序

排序中冒泡排序是最好理解的,每次都是拿一个元素与其他所有元素进行比较,知道此元素放置到合理位置,紧接着对其相邻的下一个元素反复执行此操作,知道所有元素都执行一遍,最终得到的就是排序要的数组。 p...
  • love_world_
  • love_world_
  • 2014年03月10日 22:17
  • 1125

LabVIEW 2维等高线(等值线)——井中蛙

跟随井中蛙一起做LabVIEW等高线吧!
  • a_1234567890abcd
  • a_1234567890abcd
  • 2015年06月11日 16:48
  • 1914

c#中foreach的使用

循环语句是编程的基本语句,在C#中除了沿用C语言的循环语句外,还提供了foreach语句来实现循环。那么我要说的就是,在循环操作中尽量使用foreach语句来实现。为了来更好地说明为什么要提倡使用fo...
  • u013230291
  • u013230291
  • 2017年04月18日 09:50
  • 730

华为G525乐蛙刷机包 乐蛙第123期14.04.25 适配

_________________________________________________________________   Rom下载地址:http://www.shuajizhijia...
  • u014022562
  • u014022562
  • 2014年05月06日 14:00
  • 450
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章://蛙蛙推荐:演示索引指示器的用法(C#)
举报原因:
原因补充:

(最多只允许输入30个字)