- break语句:终止当前循环,继续执行循环语句的下一语句;
- continue语句:跳过循环体的后面语句,开始下一个循环;
- 例:求[100,200]之间第一个能被21整除的整数
for n=100:200 %循环语句 if rem(n,21)~=0 %选择语句 continue end break end n 程序输出结果为n= 105
- 循环的嵌套
- 若一个 数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。
for m=1:500 s=0; for k=1:m/2 if rem(m,k)==0 s=s+k; end end if m==s disp(m); end end
输出:6
28
496
- 用筛选法求某自然数范围内的全部素数。
-
素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。用筛选法求素数的基本思想是:要找出2~m之间的全部素数,首先在2~m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数(不包括5),...,直到再划去不超过(根号m)的倍数,剩下的都是素数。 m=input('m='); p=1:m; p(1)=0; for i=2:sqrt(m) for j=2*i:i:m p(j)=0; end end n=find(p~=0); p(n) m=9 ans = 2 3 5 7
外循环控制i从2~根号下m变化,内循环在p中划去i的倍数(不包括i),p中剩下的数都是素数。find函数找出p非0元素的下标并赋给变量n(注意:n为向量)
- 关于在p中划去i的倍数,可利用矩阵运算一步完成:
-
m=input('m'); p=2:m; for i=2:sqrt(m) n=find(rem(p,i)==0&p~=i); p(n)=[]; end p m9 p = 2 3 5 7