matlab里面的for循环嵌套

如下语句实现输出1000以内的素数:
for k=1:1000,
for j=2:k-1,
s=(mod(k,j)==0);
if sum(s)<=0
disp(k):
end
end
end
每次输出的数据很奇怪,求大神解决

这是matlab里面的for循环嵌套if的用法。举例说明具体的使用方法,详解如下:

1、首先,创建一个新的子程序loopcolor,如下图所示。

2、其次,完成上述步骤后,定义几个变量,所有变量都是整数类型,代码如下图红框所示。

3、接着,完成上述步骤后,为mycolor分配一个值,  mycolor = 0,如下图所示。

4、然后,完成上述步骤后,对myrow进行循环,如下图所示。

5、随后,完成上述步骤后,在myrow循环中嵌套另一个循环mycol,如下图所示。

6、接着,完成上述步骤后,再循环里面,选择单元格并用颜色进行填充,如下图所示。

7、最后,完成上述步骤后,运行该程序,可以看到填充的色块,如下图所示。这就是matlab里面的for循环嵌套if的使用方法。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-11

函数思路:先对1到1000的数K进行循环,从2到K-1进行j循环,如果K能被j整除,那么S=1,并且跳出j这个循环(用break,j后面的循环不用做了),因为肯定不是素数了,如果不能整除那么S最后退出j循环的结果肯定是0,回到K循环,判断一下只要是S等于0,那就是素数,如下所示。

for k=1:1000

for j=2:k-1

s=(mod(k,j)==0);

if s==1

break;

end

end

if s==0

disp(k);

end

end

扩展资料:

for循环其他用法

1、for循环可以有多层嵌套。示例:

#include<stdio.h>

int main(void)

{

int i,j,k;

printf("ijk\n");

for(i=0;i<2;i++) 

for(j=0;j<2;j++) 

for(k=0;k<2;k++)

printf("%d%d%d\n",i,j,k);

return 0;

}

输出结果为: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

2、for循环中的变量生存周期为一次循环迭代。

#include<stdio.h>

int main(void)

{

int i;

for(i=0;i<9;i=i+1)

{

int a=i;

printf("%d\n",a);

}

return 0;

}

C语句中变量必须声明在前才能使用,在定义语句之前使用变量是不合法的。

参考资料来源:百度百科-for循环

本回答被网友采纳
第2个回答  推荐于2017-09-03
for k=1:1000
for j=2:k-1
s=(mod(k,j)==0);
if s==1
break;
end
end
if s==0
disp(k);
end
end

按你的思路改的
(1)先对1到1000的数K进行循环
(2)从2到K-1进行j循环,如果K能被j整除,那么S=1,并且跳出j这个循环(用break,j后面的循环不用做了),因为它肯定不是素数了.如果不能整除那么S最后退出j循环的结果肯定是0.
(3)回到K循环,判断一下只要是S等于0,那就是素数.本回答被网友采纳
第3个回答  2014-10-09
使用continue

使用break 退出循环 可以使用break 语句直接强行退出循环,忽略循环体中任何其他语句和循环条件测试。在循环中遇到break语句时,循环被终止,程序控制在循环后面语句重新开始。例如 如果for 循环被设计为从 0执行到99,然后输出0到99这些数字,但是当i等于10时,break语句终止程序。所以程序只会输出0到10。在一系列嵌套循环中使用break 语句时,它将仅仅终止最里面循环。

而continue则停止执行当前的反复,然后退回循环起始和,开始新的反复。continue 用于跳过循环体中的一部分语句,也就是不执行这部分语句

return语句用来明确地从一个方法返回。也就是,return 语句使程序控制返回到调用它方法。因此,将它分类为跳转语句。
第4个回答  推荐于2017-09-03
for k=2:1000
j=2:k-1;
s=(mod(k,j)==0);
if sum(s)<=0
disp(k);
end
end追问

给力

本回答被提问者和网友采纳
相似回答