zoukankan      html  css  js  c++  java
  • MATLAB循环结构:break+continue+嵌套

    1. break语句:终止当前循环,继续执行循环语句的下一语句;
    2. continue语句:跳过循环体的后面语句,开始下一个循环;
    3. 例:求[100,200]之间第一个能被21整除的整数
    for n=100:200      %循环语句
      if rem(n,21)~=0    %选择语句
       continue
      end
     break
    end
    n
    
    程序输出结果为n=
    105
    1. 循环的嵌套
    2. 若一个 数等于它的各个真因子之和,则称该数为完数,如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. 用筛选法求某自然数范围内的全部素数。
    2. 素数是大于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为向量)

    3. 关于在p中划去i的倍数,可利用矩阵运算一步完成:
    4. 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
  • 相关阅读:
    java+opencv实现图像灰度化
    java实现高斯平滑
    hdu 3415 单调队列
    POJ 3368 Frequent values 线段树区间合并
    UVA 11795 Mega Man's Mission 状态DP
    UVA 11552 Fewest Flops DP
    UVA 10534 Wavio Sequence DP LIS
    UVA 1424 uvalive 4256 Salesmen 简单DP
    UVA 1099 uvalive 4794 Sharing Chocolate 状态DP
    UVA 1169uvalive 3983 Robotruck 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/freesblog/p/3989493.html
Copyright © 2011-2022 走看看