一、实验目的:
1.求两数的最大公约数
2.输入边长,打印对角线相连的菱形
3.完成杨辉三角
(杨辉三角是一种数学图形,由数字排列成类似三角形的形状。
它的每个数值等于它上方两个数值之和。如下图所示)
4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
5.完数,又叫完全数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如6=1+2+3。编程找出1000以内的所有完数。
备注:以上题目任选其三完成本次实验课程
二、实验环境:
安装pycharm2023.3.4
安装适配的jdk
三、实验步骤:
1.求两数的最大公约数
way one:辗转取余法
(1)让用户输入两个数字a,b
(2)用变量接收这两个数字的值,分出较大的数,假如是a
(3)进行取余计算a%b
(4)余数为0,则最大公约数为b
(5)余数不为0,创建临时变量r接收a%b,a=b,
Way two:更相减除法
(1)让用户输入两个数字a,b
(2)用变量接收这两个数字的值,判断是否相等
(3)不相等的话用大的减小的
(4)输出最小公约数
2.输入边长,打印对角线相连的菱形
如下图:
Way one:
(1)打印上半部分包括对角线,利用for循环+算法,总共的行数是2n-1,从第一行开始打印,就在第n行结束
(2)打印下半部分,注意空格和星号的计算
(3)显示结果
Way two:
(1)让用户输入菱形的边长,设置两个变量==总行数
(2)根据设置的两个变量作为打印条件
(3)先打印第一行和最后一行
(4)分情况讨论打印上半部分和下半部分,算法计算在草稿本上完成
(5)显示结果
3.完成杨辉三角
(杨辉三角是一种数学图形,由数字排列成类似三角形的形状。
它的每个数值等于它上方两个数值之和。如下图所示)
(1)让用户输入想要计算的行数
(2)先打印一二行
(3)打印第二行以下的行数:1+ (上一行第j个+上一行第j-1个) +1
(4)输出结果
4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
(1)定义函数fun(n),设置一个参数n作为输入
(2)定义两个变量a、b,分别初始化为2.0和1.0,变量total,用于存储累加的结果
(3)使用for循环从1到n+1进行迭代。在每次迭代中,将a/b的结果累加到total中,并且更新a和b的值,使得a=原来的a+b,而b=原来的a。更新a和b的值。
(4)在循环结束后,打印出累加的结果total
(5)计算从1到20的所有项的和,并将结果打印出来
5.完数,又叫完全数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如6=1+2+3。编程找出1000以内的所有完数。
(1)用户输入一个数n
(2)创建一个空列表s,用于存储n的因子
(3)使用for循环从1到n-1遍历,判断每个数是否为n的因子,如果是则将其添加到列表s中
(4)判断列表s中所有元素的和是否等于n,如果相等则说明n是完全数
(5)如果n是完全数,则打印出完全数的表示形式,并使用for循环打印出一组递增的星号
(6)如果n不是完全数,则打印出"n不是完全数"的提示
四、实验结果:
自己运行代码截图上交。
五、实验心得:
- 算法是代码的核心,优秀的算法促成代码的健壮性
- 多思考,不要不知道就去查csdn,自己想出来的比csdn更深刻
- 一个问题有多种解决途径,坚持代码优化,不要局限自己的思维
- 如果想更快地找出数字之间的规律,计算算法,在草稿本上写会比在脑子里空想更快