zoukankan      html  css  js  c++  java
  • 计算n以内被7或17整除的数的总和

    方法一

    • 通过遍历如果能被7或17整除,并且是偶数就输出这个数,这样要遍历range次
    int methodOne(int range){
       int i,m=0,s=0;
       for(i=1;i<=range;i++){
         if((i%7==0 || i%17==0) && i%2==0){
             s=s+i;
         }
       }
       return sum;
    }
    

    方法二

    • 因为输出的都是偶数,所以可以使步长+2,这样只需要遍历range/2次。
    • 注意:i的初始值为0,这样i的变化才是0、2、4、6...递增才是偶数
    int methodOne(int range){
       int i,s=0;
       for(i=0;i<=range;i+=2){
         if((i%7==0 || i%17==0)){
             s=s+i;
         }
       }
       return s;
    }
    

    方法三

    • 能被7整除的偶数有:14、28、42、56
    • 能被17整除的偶数有:34、68、102、136
    • 能被17整除的偶数与能被7整除的偶数相差20、40、60、80...
    • 能被7整除的偶数的步长是14
    • 因为存在既能被7整除也能被17整除这样的数(如:238),所以只能加一次这样的数。前面已经能被7整除的数加了一次,后面就不能被7整除。因为能17整除的偶数增长快,所以它的最大值不能大于range。
    int methodTwo(int range){
      int sum=0,j=14,m; 
      for(m=1;j<=range;j+=14,m++){      
          sum=sum+j;
          if(j+20*m<range && (j+20*m)%7!=0){
             sum=sum+j+20*m;
          }
       }
        return sum;
    }
    

    方法四

    • 能被7整除的偶数有:14、28、42、56...14n, 前n项和S1=[n/14 * (14+n/14 * 14)]/2
    • 能被17整除的偶数有:34、68、102、170...34n, 前n项和S2=[n/34 * (34+n/34 * 34)]/2
    • 能被17整除的偶数与能被7整除的偶数有:238...238n, 前n项和S3=[(n/238 * (238+n/238 * 238)]/2;
    • 因为加了两次能被17整除的偶数与能被7整除的偶数,所以要减一次S3
    int methodThree(int n){
        int sum1, sum2, sum3;
        sum1=(n/14 * (14+n/14 * 14))/2; 
        sum2=(n/34 * (34+n/34 * 34))/2; 
        sum3=(n/238 * (238+n/238 * 238))/2; 
        return sum1+sum2-sum3;
    }
    

    ❤️有则改之,无则加勉。如有错误、建议、疑问,评论或联系飞沙QQ:2602629646
    ❤️本文来自作者:MrFlySand,转载请注明原文链接:https://www.cnblogs.com/MrFlySand/p/14151937.html

  • 相关阅读:
    Dubbo学习记录(一)
    Quartz定调度简单案例
    oracle中批量生成字段类型的脚本
    MsSQLserver中修改字段值系统自动生成的脚本
    根据oracle的主键列生成SQLserver的主键
    SQLServer2005如何批量修改架构名
    win10 下oracle tns通过IP无法访问的解决办法
    PD PDM模型中关系设置为概念模型样式
    PB12.5.2安装
    Java Web 项目目录规范
  • 原文地址:https://www.cnblogs.com/MrFlySand/p/14151937.html
Copyright © 2011-2022 走看看