大家好
欢迎回来继续学习
C++语言程序设计
接下来呢
我们再看一个例题
来使用我们刚才
自己封装的这个动态数组类模板
用这个动态数组类
来存放一些整数
我们要求范围2到n
之间的所有的质数
看看用这个动态数组类模板
是不是就可以很方便呢
尤其是当我们这个数据范围
是2到n
n由键盘输入
也就是说
到底一共有多少个数据
在编写程序的时候
是无法确定的
要到运行时才确定
那么尤其对这样的问题
看看动态数组类模板
是不是比普通的基本数组
要好用一些
这里我们这个数组类模板Array
指定它的类型参数是int
就是我们要
用它来让编译器
为我们生成一个类
用它来存放int数组
那构造这样一个对象a
它的初始状态是10个元素
接下来呢
从键盘输入一个n
我们要判断2到n范围
有哪些是质数
用键盘输入一个n
然后这个判断过程呢
接下来就是用这样一个
大的for循环
从2开始到n
检查每一个数是否能被
比它小的质数整除
怎么检查这个i
是否能被比它小的质数整除呢
就是它内层嵌套的这个for循环
来解决这个问题
内层嵌套的这个for循环
每一次呢
我们要检查比它小的质数
能不能整除它
那到底目前
一共有多少个质数了呢
这个质数是通过这个count
count初始化是0
开始0个质数
那i是2的时候
不会执行这个for循环
不执行这个for循环呢
那么这个是否质数的这个状态
isPrime这个状态呢
它就保持它初始的值是个true
这样在这个if语句中呢
就因为它是质数
所以就会把它放到
a count这个元素里面去
然后count下标
也就是质数的个数增1
当然在往里面放的时候
先要判断一下
当前数组是不是已经满了
如果已经满的话呢
把它的原素个数乘两倍
就是扩大一倍
当这个i是3的时候呢
会进入这个循环
那比它小的质数只有一个2
2不能整除3
所以那么结果是3是质数
3又再存到a数组里面去
count又再加1
当i是4的时候
进入到循环
会依次用2 用3去除它
看能不能整除
用2去除它的时候
就发现已经能够整除了
说明isPrime为false
4不是质数
这个时候就不必要继续
完成这个for循环
去再用3去整除它了
不用了
就直接break废除这个循环了
废除循环以后
那么在这个if语句里面一判断
那么isPrime已经是flase了
所以这个if分支就不执行了
4就没有存进去
所以用这样的办法呢
我们就可以把从2到n的数
都依次检查一遍
只有存入到a数组里面去的呢
就都是质数
那完成这个过程以后呢
我们再输出数组的所有元素 验证一下