zoukankan      html  css  js  c++  java
  • 读程序的题目

    阅读下面程序,请回答如下问题:

    问题1:这个程序要找的是符合什么条件的数?

    问题2:这样的数存在么?符合这一条件的最小的数是什么?

    问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间精确到分钟(电脑:单核CPU 4.0G Hz,内存和硬盘等资源充足)。

    问题4:在多核电脑上如何提高这一程序的运行效率?

    using System;
    
    using System.Collections.Generic;
    
    using System.Text;
    
    namespace FindTheNumber
    
    {
      class Program
      {
        static void Main(string[] args)
        {
          int [] rg =
              {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
               20,21,22,23,24,25,26,27,28,29,30,31};
          for (Int64 i = 1; i < Int64.MaxValue; i++)
          {
            int hit = 0;
            int hit1 = -1;
            int hit2 = -1;
            for (int j = 0; (j < rg.Length) && (hit <=2) ; j++)
            {
              if ((i % rg[j]) != 0)
              {
                hit++;
                if (hit == 1)
                {
                  hit1 = j;
                }
                else if (hit == 2)
                {
                  hit2 = j;
                }
                else
                  break;
              }
    
            }
            if ((hit == 2)&& (hit1+1==hit2))
            {
              Console.WriteLine("found {0}", i);
            }
          }
        }
      }
    }

    问题1:看懂别人的程序首先要去分析一些关键的判断语句。

      从上面代码可以看出比较关键的语句为读取rg数组内容的for循环和输出的判断条件if ((hit == 2)&& (hit1+1==hit2))。在尝试单步运行了部分过程之后,发现

      1.若是从for循环内的else break语句跳出循环而得到的数据,hit肯定不为2,即不满足后面的判断条件,

      2.若要满足输出条件,跳出循环的终结条件只能为j=rg.length,也就是说数字i把rg数组内所有的数据全部取余了一遍。

      再看输出条件,hit==2,即只能其中两个数不被i整除,hit1+1=hit2,即不能被整除的两个数相邻。

      于是,这段代码的目的就很清晰了:在足够大的范围(int64.maxvalue)内找出一些数,这些数除了数组rg内某相邻的两个数之外全部可以整除。

    问题2:关于这个问题,我的确傻傻的手动算了好几个数,但发现好难找啊(手动哈哈),不过度娘告诉我,23*33*52*7*11*13*19*23*29*31=2123581660200,他可以。

    问题3:啊,我电脑卡了。

    问题4:多开几个线程从不同的起点同时进行吧。。

     

  • 相关阅读:
    centos8 将SSSD配置为使用LDAP并要求TLS身份验证
    Centos8 搭建 kafka2.8 .net5 简单使用kafka
    .net core 3.1 ActionFilter 拦截器 偶然 OnActionExecuting 中HttpContext.Session.Id 为空字符串 的问题
    Springboot根据不同环境加载对应的配置
    VMware Workstation12 安装 Centos8.3
    .net core json配置文件小结
    springboot mybatisplus createtime和updatetime自动填充
    .net core autofac依赖注入简洁版
    .Net Core 使用 redis 存储 session
    .Net Core 接入 RocketMQ
  • 原文地址:https://www.cnblogs.com/weit/p/Eric.html
Copyright © 2011-2022 走看看