A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 悟中生有 中级黑马   /  2013-12-7 11:49  /  1953 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 悟中生有 于 2013-12-7 12:50 编辑

如题:每3个人一排,结果余下2人;每5个人一排,结果余下3人;每7个人一排,结果也是余下2人。
请问如果人数在0-1000之间,那么,可能有多少人呢?

用哪种循环最佳?  求解!


评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

11 个回复

倒序浏览
本帖最后由 几番意难相付 于 2013-12-7 12:01 编辑
  1. int person=1000;                                                     //定义人数上限
  2.   for(int x=0;x<person;x++){                                  //循环次数为上限的次数
  3.        if(x%3==2   &&   x%5==3   &&   x%7==2)    //定义循环条件
  4.              System.out.println(x);                                //打印出符合条件的值
  5. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
  1. for( int i = 0; 7*i+2<=1000; i++ )
  2.                 {
  3.                         int temp = 7*i+2;
  4.                         if( (temp%3==2)&&(temp%5==3) )
  5.                                 System.out.print(temp+" ");
  6.                         System.out.println();
  7.                 }
复制代码

如果只是加1循环,枚举0~1000之间的所有数值,那样就太慢了!上述代码提供了一种比较快的方法,结果是968。希望能帮到您,也请批评指正,共同进步!

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
回复 使用道具 举报
翼展哈哈 发表于 2013-12-7 12:15
如果只是加1循环,枚举0~1000之间的所有数值,那样就太慢了!上述代码提供了一种比较快的方法,结果是968 ...

多谢指教!共同进步!
回复 使用道具 举报
悟中生有 发表于 2013-12-7 12:22
多谢指教!共同进步!

我觉得,我提供的代码运行还是比较快的,应该比2楼提供的枚举1~1000 的快一些吧,您觉得呢?我的代码只会从0枚举到142(1000/7),是吧?:handshake
回复 使用道具 举报
翼展哈哈 发表于 2013-12-7 12:32
我觉得,我提供的代码运行还是比较快的,应该比2楼提供的枚举1~1000 的快一些吧,您觉得呢?我的代码只会 ...

我运行了一下,结果是一样的?  不知为何?
回复 使用道具 举报
class HaXin
{
        public static void main(String[] args)
        {
                int x;
                for(int i = 0;i <= 1000; i++)
                {
                        if((i % 3 == 2) & (i % 5 == 3) & (i % 7 == 2))
                        {
                                System.out.print(i + ",");
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
大雄9293 发表于 2013-12-7 13:00
class HaXin
{
        public static void main(String[] args)

变量x没有用到啊?
回复 使用道具 举报
悟中生有 发表于 2013-12-7 12:51
我运行了一下,结果是一样的?  不知为何?

我说的是一个效率问题,就是程序运行快慢的问题,我的代码和2楼的都能运行出正确结果应该是没有问题的。我只是在说,我的代码应给是快一点儿的。:shutup:
回复 使用道具 举报
翼展哈哈 发表于 2013-12-7 13:32
我说的是一个效率问题,就是程序运行快慢的问题,我的代码和2楼的都能运行出正确结果应该是没有问题的。 ...

哦, 是的,多谢指教了:)
回复 使用道具 举报
本帖最后由 王新年 于 2013-12-7 14:42 编辑

既然每3个人一排,结果余下2人,每7个人一排,结果余下2人,那么该数肯定是2或是21的倍数加2,2显然是不对的!所以程序变量i的初始值最低是23可以写成如下代码:这样更节省时间,效果更好!
count=23;
while(true){
    if(count%5==3){
         System.out.println(count);        //打印出所有可能的值
      if(count>1000)
         {  break;}      
    }
    count=count+21;
}

想了好久,才想出求  技术分!

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马