matlab多个最大公约数,求任意多数的最大公约数及最小公倍数的matlab实现
一般matlab里给出的gcd(a,b)函数求最大公约数只能有两个参数,如果输入gcd(1,2,3)就会出现出现如下错误:
所以如果求多个数的最大公约数就会出现问题,下面程序是对任意多个数求最大公约数:
function [maxgcd]=maxgcd(A)
n=length(A);
maxgcd=A(1);
for i=1:1:(n-1)
maxgcd=gcd(maxgcd,A(i+1));
end
end
例如求4,8,12,24的最大公约数为:
除了求最大公约数,有时候也要求多个数的最小公倍数:
function [min_GBS]=min_GBS(A)
n=length(A);
maxA=max(A);
s=1;
k=0;
for i=1:1:n
s=s*A(i);
end
fla=false;
for i=maxA:1:s
for j=1:1:n
if(mod(i,A(j))==0)
fla=true;
k=i;
else
fla=false;
break;
end
end
if(fla==true)
min_GBS=k;
return;
end
end
end
例如求4,8,12,16的最小公倍数就是48.
当然,我们在处理一些数据的时候有时候需要把分数化成整数,比如把多项式1/2*x^2+x+1/5化成整系数的形式:
5*x^2+10*x+2,且系数为互质的形式,此时需要求多个非整型的数据的“最小公倍数”:
function [min_double_GBS]=min_doub_GBS(A)
n=length(A);
% f_on=sym([]);
f_down=sym([]);
char fla=false;
for i=1:1:n
[~,f_down(i)]=numden(sym(A(i)));
end
% f_down
for i=1:1:n
if(f_down(i)~=1)
fla=false;
break;
else
fla=true;
end
end
if(fla==false)
GBS=min_GBS(f_down);
B=GBS*A;
min_double_GBS=min_GBS(B);
else
min_double_GBS=min_GBS(A);
end
% if(maxgcd(A)~=1)
% min_double_GBS
for i=1:1:n
A(i)=min_double_GBS/A(i);
end
% A
if(maxgcd(A)~=1)
d=maxgcd(A);
min_double_GBS=min_double_GBS/d;
end
end
注意:这个函数是需要调用上面两个函数的!
例如求1,1/2,3的“最小公倍数”为3,分别是乘以3,6,1
再例如求1,2/5,3的“最小公倍数”为6,分别是乘以6,15,2
matlab多个最大公约数,求任意多数的最大公约数及最小公倍数的matlab实现相关推荐
- python编写函数、计算三个数的最大公约数_python 函数求两个数的最大公约数和最小公倍数...
1. 求最小公倍数的算法: 最小公倍数 = 两个整数的乘积 / 最大公约数 所以我们首先要求出两个整数的最大公约数, 求两个数的最大公约数思路如下: 2. 求最大公约数算法: 1. 整数A对整数B进行 ...
- 用递归法求两个数的最大公约数
用递归法求两个数的最大公约数 求两个数的最大公约数的思路是,用辗转现除法 辗转相除法求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数: 再用第一个余数除小的一个数,得第二个余 ...
- c语言求两个数的最小公倍数辗转相除法,C语言辗转相除法求2个数的最小公约数...
辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...
- 求三个数的最大公约数和最小公倍数
题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整数最大公约数 ...
- MATLAB 求任意一个数的所有因子
MATLAB 求 任意一个数的所有因子 我们都知道matlab 有自带的求最大公约数和最小公倍数的函数,但是缺少求取任意一个数所有 因子 的函数, 我么有时候将一个数组进行分段截取的时候希望每段长度都 ...
- java程序:求三个数的最大公约数和最小公倍数
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /**main方法用于测试结果**/publi ...
- 求两个数的最大公约数(辗转相减法)
更相减损法:也叫更相减损术,是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合. <九章算术>是中国古代的数学专著,其中的 ...
- matlab方程近似求根,第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令.doc...
第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令 第七讲 MATLAB中求方程的近似根(解) 教学目的:学习matlab中求根命令,了解代数方程求根求解的四种方法,即图解法. ...
- 【经典100题】 题目16 求两个数的最大公约数和最小公倍数
题目 求两个数的最大公约数和最小公倍数. 最大公约数:指两个或多个整数共有约数中最大的一个 最小公倍数:指两个或多个整数共有倍数中最小的一个 说明:自己没有搞清楚最大公约数和最小公倍数的定义,结果走了 ...
最新文章
- Debian上网的问题小结
- Vue PDF文件预览vue-pdf
- watson软件使用_使用Watson Assistant进行多语言管理
- 数字图像处理——2D降噪
- VBA合并csv文件
- php与数据库编码格式转码,php 数据库 中文转码
- String字符串按多个字符Split方法
- Php开发银行接口之浦发银行
- JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
- Mac平台使用SnapMotion从视频中提取图像
- kmz文件转为arcgis的图层(制作底图)
- flexbox:1.0.0_了解Flexbox:您需要了解的一切
- 愿天下有情人都是失散多年的兄妹 (25 分)
- 这五款小众软件你肯定不知道
- 送礼品的禁忌和注意事项
- 洛谷 P1879 [USACO06NOV]玉米田Corn Fields
- 《Dreamweaver CS6 完全自学教程》笔记 第十三章:Dreamweaver 中的 HTML 代码
- 神经网络与傅立叶变换到底有没有关系?
- 《区块链技术与应用》北大肖臻老师——课程笔记【4-5】
- 常见广域网协议及特点