zoukankan      html  css  js  c++  java
  • 作业2的回答

    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:这个程序要找的是符合什么条件的数?

    答:无法被有且仅有的两个(2-31中的数)整除,并且这两个数是连续的。

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

    答:有,最小值是23*33*52*7*11*13*19*23*29*31=2123581660200;即:16,17与其它28个数字的最小公倍数。

    分析过程参考了这位同学的:http://www.cnblogs.com/dreamq/p/5299508.html

    ps:过程看了半天,还是有点云里雾里。

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

    答:4.0GHz的单核CPU,其处理速度大概是4*10^9次/s。i从1加到上面的最小值为外层循环的次数。内层循环:如果为奇数只执行最多3次(2与4不能整除)如果为偶数最多执行15次,平均取半在折一点算7次。%计算和其他赋值姑且算100个周期吧。那么

    大概就需要:1061790830100(最小数除以2)*100*(3+7)/(4*10^9)/60=4425Min(约)

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

    答:多线程处理,优化算法(比如已经能推出最小值,就可以直接从最小值开始找);

  • 相关阅读:
    第三方驱动备份与还原
    Greenplum 解决 gpstop -u 指令报错
    yum安装(卸载)本地rpm包的方法(卸载本地安装的greenplum 5.19.rpm)
    Java JUC(java.util.concurrent工具包)
    netty 详解(八)基于 Netty 模拟实现 RPC
    netty 详解(七)netty 自定义协议解决 TCP 粘包和拆包
    netty 详解(六)netty 自定义编码解码器
    netty 详解(五)netty 使用 protobuf 序列化
    netty 详解(四)netty 开发 WebSocket 长连接程序
    netty 详解(三)netty 心跳检测机制案例
  • 原文地址:https://www.cnblogs.com/xxjkdtx/p/5303578.html
Copyright © 2011-2022 走看看