主题:判断一个数是否素数的程序改错
wuyushi
[专家分:10] 发布于 2008-06-09 14:50:00
题目是:验证输入的自然数是否是素数,对输入的非自然数给出警告信息“输入参数误,M必是自然数”,并结束程序运行,当输入数是自然数且不是素数,显示信息“M不是素数”,当输入数是自然且是素数显示信息,“M是素数”
程序是:
function sushu(m)
%验证自然数M是否是素数
if m<=0|m-round(m)~=0
warning(‘输入参数错误,M必是自然数’)
return
end
k=sqrt(m);k=floor(m);
for i=1:k
if rem(m,i)==0
disp(‘m不是素数’)
break
else if i>=k
disp(‘m是素数’)
end
end
运行的时候总是出现错误 恳请哪位高手帮帮忙!紧急!
回复列表 (共5个回复)
沙发
ronei [专家分:360] 发布于 2008-06-09 16:07:00
1. 首先你的引号用的就不对,要用英文模式下的引号
2. k=floor(m) 应写为 k=floor(k);
板凳
wuyushi [专家分:10] 发布于 2008-06-09 18:09:00
没有效果啊,我使用的是英文状态下的字符 还有你把那个m改成k也没有效果啊
3 楼
ronei [专家分:360] 发布于 2008-06-09 18:58:00
%function sushu(m)
%验证自然数M是否是素数
clc;
m=117;
if m<=0|m-round(m)~=0
warning('输入参数错误,M必是自然数')
return
end
k=sqrt(m);k=floor(k);
for i=2:k
if rem(m,i)==0
disp('m不是素数')
break
else if i>=k
disp('m是素数')
end
end
end
以上程序在我电脑下测试通过。
4 楼
wuyushi [专家分:10] 发布于 2008-06-09 21:59:00
嗯 非常感谢你的回答。不过有个小问题,如果m的值要在命令窗口输入的话那该怎么改啊?
再次感谢你的帮助!
5 楼
ronei [专家分:360] 发布于 2008-06-10 00:01:00
很简单,把第一行的注释去掉,变成function,
然后在命令行里输入 sushu(17), 或者在别的程序里调用, sushu(m), 但m要在之前被赋值。
我把第一行变成注释,是为了调试方便。
function sushu(m)
%验证自然数M是否是素数
clc;
% m=117;
if m<=0|m-round(m)~=0
warning('输入参数错误,M必是自然数')
return
end
k=sqrt(m);k=floor(k);
for i=2:k
if rem(m,i)==0
disp('m不是素数')
break
else if i>=k
disp('m是素数')
end
end
end
我来回复