算法_数学问题_Question7_爱因斯坦的数学问题(爬梯子java实现)

这篇文章讲述的是算法初级部分的爱因斯坦的数学问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步垮2阶,最后剩1阶,若每步垮3阶,最后剩两阶,若每步垮5阶,则最后剩4阶,若每步垮6阶最后剩5阶。只有每次垮7阶时,最后才正好一阶不剩。请问在1~N内,有多少个数能满足?

算法分析

算法分析:这道问题比较简单,只需将1~N的数逐一和条件判断即可,条件为:
N%2 == 1 且
N%3 == 2 且
N%5 == 4 且
N%6 == 5 且
N%7 == 0 ;
若满足以上5个条件,则输出N

代码实现

package mathematics;

public class Q7_EinsteinMathQuestion {
    /**
     * 问题描述:爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步垮2阶,最后剩1阶,若
     *          每步垮3阶,最后剩两阶,若每步垮5阶,则最后剩4阶,若每步垮6阶最后剩5阶。
     *          只有每次垮7阶时,最后才正好一阶不剩。请问在1~N内,有多少个数能满足?
     * 
     * 算法分析:这道问题比较简单,只需将1~N的数逐一和条件判断即可,条件为:
     *                          N%2 == 1 且
     *                          N%3 == 2 且
     *                          N%5 == 4 且
     *                          N%6 == 5 且
     *                          N%7 == 0 ;
     *          若满足以上5个条件,则输出N
     */
    public static void main(String[] args) {
        int N = 600 ;                                           //设置上限N
        int sum = 0 ;                                           //初始化计数器
        System.out.print("1~"+N+" 中满足条件的数为: ");
        for(int i=1 ; i<=N ;i++){
            if(i%2==1 && i%3==2 && i%5==4 && i%6==5 && i%7==0){ //判断条件
                System.out.print(i+" ");                        //若满足则输出
                sum++ ;
            }
        }
        System.out.println(",共"+sum+"个");
    }
}

样例输出

1~600 中满足条件的数为: 119 329 539 ,共3个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值