作业帮 > 综合 > 作业

matlab小程序求找错!急死了……

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/07 18:03:01
matlab小程序求找错!急死了……
一个自然数是素数,且它的数字位置经过任意对换后仍为素数,则称是绝对素数,
例如13是绝对素数.试求所有两位绝对素数.
要求:定义一个判断素数的函数文件.
函数文件:prime.m
function a = prime(b)
% 绝对素数
y=rem(b,10)
x=fix(b/10)
c=10*y+x
sign1=0
sign2=0
for i=2:sqrt(c)
if rem(c,i)==0
break;
end
if i==fix(sqrt(c))
sign1=1;
end
end
for i=2:sqrt(b)
if rem(b,i)==0
break;
end
if i==fix(sqrt(b))
sign2=1;
end
end
if sign1==1 & sign2==1
a=b;
end
程序文件:
clear all;close all;clc;
p=[];
m=0;
for n=11:99
[m]=prime(n);
p=[p,m];
end
p
运行时提示:
Error in ==> prime at 3y=rem(b,10)
Output argument "a" (and maybe others) not assigned during call to "E:\matlab\函数\prime.m>prime"
求指导……在线等……跪谢~
matlab小程序求找错!急死了……
如果不是绝对素数,那么就没返回值了
所以出现这个错误
把返回值作为标志,是绝对素数返回1,不是返回0
在脚本文件里面通过判断返回值来得到所要的矩阵
修改之后如下:

function a = prime(b)
% 绝对素数
y = rem(b,10)
x = fix(b/10)
c = 10*y+x
sign1=0
sign2=0
for i=2:sqrt(c)
if rem(c,i)==0
break;
end
if i==fix(sqrt(c))
sign1=1;
end
end
for i=2:sqrt(b)
if rem(b,i)==0
break;
end
if i==fix(sqrt(b))
sign2=1;
end
end
if sign1==1 & sign2==1
a=1;
else
a=0;
end
%
clear all;close all;clc;
p=[];
m=0;
for n=11:99
m=prime(n);
if m==1
p=[p,n];
end
end
p