试用MATLAB编写一个函数文件(subject4.m),实现以下功能
试用MATLAB编写一个函数文件(subject4.m),实现以下功能:(1)A=subject(N):输入N为大于1的整数;输出A为1~N内的所有质数;(2)A=sub...
试用MATLAB编写一个函数文件(subject4.m),实现以下功能:
(1)A=subject(N):输入N为大于1的整数;输出A为1~N内的所有质数;
(2)A=subject(N, n):输入n为大于1的质数,输出A为1~N内能整除n的所有整数;
(3)A=subject(N, n1……nK):输入n1……nK为K个大于1的质数(K为任意整数),输出A为1~N内能同时整除n1……nK的所有整数;
(4)当函数输入违规时,输出相应的错误提示,结束函数。 展开
(1)A=subject(N):输入N为大于1的整数;输出A为1~N内的所有质数;
(2)A=subject(N, n):输入n为大于1的质数,输出A为1~N内能整除n的所有整数;
(3)A=subject(N, n1……nK):输入n1……nK为K个大于1的质数(K为任意整数),输出A为1~N内能同时整除n1……nK的所有整数;
(4)当函数输入违规时,输出相应的错误提示,结束函数。 展开
1个回答
展开全部
function A=subject4(varargin)
if nargin==0
error('请至少输入一个大于1的整数');
end
N = varargin{1};
if N~=fix(N) || sum(size(N))~=2 || N<=1
error('N必须是大于1的整数');
end
if nargin==1
A=primes(N);
fprintf('输出A为1~N内的所有质数为:')
disp(A)
return;
end
n=cell2mat(varargin(2:end));
for i=1:nargin-1
if ~isprime(n(i)) || sum(size(n(i)))~=2 || n(i)<=1
error('除了第一个数外,输入的数必须是大于1的质数');
end
end
N=N*ones(1,nargin-1);
len=fix(N./n);
A=n(1)*(1:len);
for i=2:nargin-1
A=intersect(A,n(i)*(1:len));
end
fprintf('输出A为1~N内的n倍数或公倍数为:')
disp(A)
return;
if nargin==0
error('请至少输入一个大于1的整数');
end
N = varargin{1};
if N~=fix(N) || sum(size(N))~=2 || N<=1
error('N必须是大于1的整数');
end
if nargin==1
A=primes(N);
fprintf('输出A为1~N内的所有质数为:')
disp(A)
return;
end
n=cell2mat(varargin(2:end));
for i=1:nargin-1
if ~isprime(n(i)) || sum(size(n(i)))~=2 || n(i)<=1
error('除了第一个数外,输入的数必须是大于1的质数');
end
end
N=N*ones(1,nargin-1);
len=fix(N./n);
A=n(1)*(1:len);
for i=2:nargin-1
A=intersect(A,n(i)*(1:len));
end
fprintf('输出A为1~N内的n倍数或公倍数为:')
disp(A)
return;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询