写在最前面
本人为MATLAB小菜鸟,本博客作为阶段学习的小总结,欢迎大家学习交流!
坚持是胜利的基石!
题目五
题目的意思就是求出最小的能够被1-20整除的正数,其实说白了就是求1-20的最小公倍数。
思路
1.通过查阅资料发现,MATLAB中有求最小公倍数的函数f=lcm(x,y),那这样就很方便了,直接利用该函数,求1-20的最小公倍数。1,2–2;2,3–6;6,4–12,以此类推得出结果。
2.一般方法,假如并不知道有f=lcm(x,y)的函数,我们可以求出两个数的最小公倍数,,最简单的方法就是两个数中较大的数或者其倍数可以整除较小的数,那么这个数就是最小公倍数。注意在这个过程中改变i的值,x应当从2开始。
代码块
方法一:利用函数求解
%方法一:利用lcm最小公倍数的函数求解(另外,可以利用gcd(x,y)求最大公约数)
disp('求1-20的最小公倍数:')
clear;
a=1;
for i=2:20
b=lcm(a,i);
a=b;
i=i+1;
end
fprintf('所求1-20的最小公倍数为:%d\n',b);
方法二:正常方式求解,不通过函数
%方法二:正常求解
clear;
b=3;
x=2;
for i=2:20
while mod(b,i)~=0
b=b*x/(x-1); %该语句的目的是实现b*2,b*3等等
x=x+1;
end
x=2; %恢复初始x的值,当从新的b开始时,应当是b*2,b*3
i=i+1;
end
fprintf('1-20的最小公倍数为:%d\n',b);
结果
最小的能够被1-20整除的正整数为232792560
最后,欢迎大家批评指正,一起交流!