首页 理论教育 判断正整数是否为素数,以及计算两个数的最大公约数

判断正整数是否为素数,以及计算两个数的最大公约数

时间:2023-11-01 理论教育 版权反馈
【摘要】:② 该问题是要判断100~200之间的每一个数能否被7整除。表6-2窗体及各控件的相关属性设置③ 编写代码如下:任意输入一个正整数,判断其是否是素数。表6-3窗体及各控件的相关属性设置③ 编写程序代码如下:在窗体的两个文本框中分别输入两个数,单击命令按钮后,计算这两个数的最大公约数,并将其显示到标签控件中。这种利用关系Ai=Ai-1*10+2产生下一个加数,并与s相加的操作被循环执行,因此用For循环结构来实现。

判断正整数是否为素数,以及计算两个数的最大公约数

实验目的

➢掌握循环结构程序的编写,理解循环结构的执行过程。

➢掌握Do…Loop语句与For…Next语句的正确使用方法及之间的区别。

【实验6-1】请将100~200之间所有7的倍数输出到文本框中。

方法分析:

① 在窗体中添加1个文本框和1个命令按钮

② 该问题是要判断100~200之间的每一个数能否被7整除。即判断一个数能否被7整除的操作被重复执行,因此考虑用循环来解决问题,并且循环变量的取值范围在100到200间。

③ 为将每个能被7整除的数字输出到文本框,需要设置文本框为多行显示,并可设置文本框有垂直滚动条

具体步骤如下:

① 在窗体上添加1个文本框,1个命令按钮,按表6-1设置窗体及各控件的属性值。

表6-1 窗体及各控件的属性值

② 程序代码如下:

上述问题还可以用其他循环语句来解决。

方法1:

【实验6-2】请将1900~2000年之间所有的闰年输出到文本框中。

方法分析:

① 基本思路同实验6-1。

② 判断闰年的条件:能够被4整除但不能被100整除,或者能被400整除。

程序代码如下:

【实验6-3】任意输入1个数,请输出该数的所有因子(包括1和它本身)。

方法分析:

① 在窗体中添加2个文本框,用于输入一个值和输出该值的所有因子。

② 假设输出变量x的所有因子,就需要判断1~x间的每一个数能否被x整除,如果能整除,则是x的因子,否则判断下一个数。

具体步骤如下:

① 在窗体中添加3个命令按钮(分别是“找因子”、“清空”、“结束”)和2个文本框。

② 设置窗体及各控件的相关属性,见表6-2。

表6-2 窗体及各控件的相关属性设置

③ 编写代码如下:

【实验6-4】任意输入一个正整数,判断其是否是素数

方法分析:

① 素数是指除了1和它本身之外,其他任何正整数都不能被它整除。

② 假设n为被判断的数,如果2~n-1之间的每一个数都不能被n整除,则此数为素数,否则就不是素数。由于循环次数固定,因此也可以使用For语句并且循环变量的初值为2,终值是n\2或Int(n/2)(因为1个数除了1和它本身外,其余因子不会超过这个数的一半)。

③ 在循环过程中,如果有循环变量的值能被n整除,则用Exit For语句提前结束循环。

④ 循环结束后,判断条件循环变量<=终值的值,如果为真,则意味着有某个数能被n整除,程序执行了Exit For语句提前结束循环,因此n不是素数;否则,n就是一个素数。

具体步骤如下:

① 在窗体上添加1个命令按钮,2个标签。

② 设置窗体及各控件相关属性。

③ 编写如下代码:

【实验6-5】利用随机函数产生10个(10,100)之间的随机整数,请输出其中最大值。(www.xing528.com)

方法分析:

① 函数Int(Rnd*(100-10+1)+10)用来产生随机整数。

② 定义变量max用于保存将来找到的最大值,给其赋初值为0。

③ 将产生的每一个随机整数分别与max比较,如果某个数大于max的值,则将此数赋值给max,经过反复比较后,最大的值即存在于max中。

④ 产生随机数与寻找最大值的操作均发生命令按钮的Click事件过程中。

具体步骤如下:

① 在窗体中添加3个命令按钮,一个文本框(用来显示所产生的10个随机数),一个标签(用来显示最终的最大值)。

② 按表6-3设置窗体及各控件的相关属性。

表6-3 窗体及各控件的相关属性设置

③ 编写程序代码如下:

【实验6-6】在窗体的两个文本框中分别输入两个数,单击命令按钮后,计算这两个数的最大公约数,并将其显示到标签控件中。

方法分析:

① 设任意输入的两个数分别保存到变量m与n中,它们的最大公约数应该出现在1~m之间(1~n也可以)。

② 为了找到最大公约数,可以按m→1的方向寻找,找到的第一个能够同时被m和n整除的数就是我们要找的最大公约数,其余的数就不需再判断了,可以用Exit For语句提前结束循环。

具体步骤如下:

① 设计界面,在窗体中添加2个文本框,用于输入被判断的两个数字,1个标签用于输出结果,3个命令按钮(代表计算公约数、清空、结束)。

② 设置3个命令按钮的Caption属性分别为计算公约数、清空、结束;文本框的Text属性为空,标签的Caption属性为空。

③ 编写如下程序代码:

【实验6-7】编写程序,其功能是输出如图6-1所示的图形。

图6-1

方法分析:

① 图形包括5行,每行都是输出空格与“*”,这种操作被重复执行5次,因此用For循环可以实现,循环变量代表正在处理的行数。

② 在每一次循环中首先要求输出若干空格,被输出的空格数量与行数的关系是5-i行数(为了使图形能显示到窗体中间,可以设定为10-i);输出空格后紧接着要输出2*行数-1个“*”,这也是一个重复的过程,应该用循环来实现。

③ 将每一行的空格与“*”输出后,需要用一条Print语句来结束本行的输出。

程序代码如下:

【实验6-8】求Sn=2+22+222+···+222···222(n个2)

方法分析:

① 计算前,使用InputBox输入n的值。

② 该问题总体来说是n个数求和,而且这些数之间存在着Ai=Ai-1*10+2的关系,将第一个数A(初值为2)与s(s的初值为0)相加,保存到s中,然后利用关系Ai=Ai-1*10+2,计算出下一个加数,再与s相加重新保存到s中。这种利用关系Ai=Ai-1*10+2产生下一个加数,并与s相加的操作被循环执行,因此用For循环结构来实现。

编写程序代码如下:

运行程序,其结果如图6-2所示。

图6-2

【实验6-9】设计程序,计算s=1+(1+2)+(1+2+3)+···+(1+2+3+···+n)的值,其中n的值由用户输入。

方法分析:

① 题目中的式子相当于s=(1)+(1+2)+(1+2+3)+···+(1+2+3+···+n),如果把每个括号当作一个数字,则相当于n+1个数字求和。假如每个括号的和用t来表示,相当于将s=s+t循环执行了n+1次。

② 但在每一次循环执行s=s+t之前,需要先计算出t的值。而在第i次循环时,t 的值应该是1+2+3+···+i的值,相当于要编写一段代码来实现t=1+2+3+···+i,这对于我们来说用For循环语句很容易实现,在此问题中相当于一个循环中嵌套了另一个循环,构成了循环结构的嵌套。

程序代码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈