阅读代码

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

i是除了rg数组里两个相连不能整除,其余的数都能整除的数,例如,数组里11和12不能整除i,其余的数都能整除i。

这个程序有两个for循环嵌套到一起,外层循环Int64的意思是64位有符号数的意思,MaxValue就是等于2^63-1。

在内层循环,输出时需满足hit==2,说明i只不能整除数组里的两个数。输出时还需满足hit1+1==hit2,说明数组中不能整除i的两个数在数组中是连续的。

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

我没有找到这样的数。而且我在电脑上运行了一下,等了很久都没有执行完成。也许存在这样的数,如果存在这个数会很大。

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

外层循环需要执行2^63-1次,内层每次最多执行29次。该程序最多一共执行(2^63-1)*29次。

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

关闭其他无关的软件和网页,充分利用cpu的运行能力,从而提高cpu的运行效率。并且让多个cpu同时工作,提高程序的运行效率。

时间: 2024-10-24 06:19:07

阅读代码的相关文章

从阅读Discuz的核心代码并给出注释的经历分析程序员该如何阅读代码?

本文标签:   程序员 php Discuz的核心代码 框架 深度学习框架 阅读优秀的代码,是技术水平成长的最佳途径.记得每个进来的新人,我都做过阅读优秀代码的要求,但几乎都只能坚持很少一段时间而已. 前晚大家还在开玩笑的讨论,都是因为看了前人的一些写法,才学会了一些乱七八糟的花招. 晚上我又开始重新阅读Discuz的核心代码,花了1h多的时间,才完成一个core文件的注释. 注释后的代码: <?php /** * [Discuz!] (C)2001-2099 Comsenz Inc. * Th

[Android阅读代码]android-async-http源码学习一

android-async-http 下载地址 一个比较常用的Http请求库,基于org.apache.http对http操作进行封装. 特点: 1.每一个HTTP请求发生在UI线程之外,Client通过回调处理HTTP请求的结果,使得Client代码逻辑清晰 2.每一个请求使用线程池管理执行 3.支持gzip , cookie等功能 4.支持自动重试连接功能 [Android阅读代码]android-async-http源码学习一,布布扣,bubuko.com

阅读代码的姿势

作为程序员坚持阅读代码是持续自我提升的有效方法之一.有心的程序员不仅要找到优秀代码阅读,更要注意阅读的方法,从整体架构掌握再逐步深入细节,先“广度优先”,再选自己感兴趣的方面进行“深度历险”. 一般地,在一个程序员的日常工作之中,绝大多数时间都是在「阅读代码」,而不是在「写代码」.但是,阅读代码往往是一件很枯燥的事情,尤其当遇到了一个不漂亮的设计,反抗的心理往往更加强烈. 事实上,变换一下习惯.思路和方法,代码阅读其实是一个很享受的过程.阅读代码的模式,实践和习惯,集大成者莫过于希腊作者Diom

阅读代码的方法

1.如何阅读大段代码 当我们在阅读一大段代码时 需要先理清楚框架,因为在代码里存在太多的细节,而我们大脑并不能同时处理很多信息. 框架是什么,框架就是抽象的,重要的,宏观的. 怎么才能认识到框架 我们可以在大脑里先设想下这个框架应该是怎样的,需要做哪些操作,然后在代码里找证据,适当时进行纠正. 先框架 再细节 最终在大脑中得到整体 框架 + 细节 -> 整体 2.阅读代码的一种方法 与实际运行情况进行对比来加深和纠正我们对代码的认识. ps:哲学高度:天下大事必做于细,天下难事必做与易.

阅读代码分析工具Understand 2.0试用

Understand 2.0是一款源码阅读分析软件,功能强大.试用过一段时间后,感觉相当不错,确实能够大大提高代码阅读效率. 因为Understand功能十分强大,本文不可能详尽地介绍它的全部功能,所以仅仅列举本人觉得比較重要或有特色的功能,以做抛砖引玉之举. Understand 2.0能够从http://www.scitools.com/下载到,安装后能够试用15天. 使用Understand阅读代码前.要先创建一个Project,然后把全部的源码文件增加到这个Project里.这里我创建了

微软资深软件工程师:阅读代码真的很难

编者按:原文作者EricLippert是一名资深软件设计工程师,从1996年起一直在微软开发部门任职,协助设计并实现VBScript. JScript.JScript.NET.Windows Script Host.Visual Studio Tools for Office 和 C#. Escalation的工程师JeremyK在他的博客中问到: 你是怎么教人们快速深入挖掘不熟悉的代码(不是自己所写的)?我学习如何编程的方法很传统 —— 自己动手编码.但我现在很纠结:到底是集中精神阅读源码,还

从《如何高效阅读》到如何阅读代码

?<如何高效学习>是一本主张通过整体性学习的方法来提高学习效率的书.书中结合信息的几种不同类型(随意的.观点的.过程的.具体的.抽象的),从信息的获取.理解.拓展.纠错和应用这几个逐步深入的层次,提出了如何高效学习的假说,指出了不少具有实用价值的方法,例如快速阅读.笔记流.比喻内化.图表.纠错和项目应用等. 刚看这本书的时候,我是一口气大约在一个多小时快读完的,记了十几条笔记.后面两天都回头来翻一番书后的总结和自己的笔记,每次都有些新的感想.这里尤其想整理的是:这本书给自己在阅读代码方面的几点

怎么阅读代码

一段程序,或者是一个长篇代码,我们应该怎么阅读 1.首先,你必须搞清楚这个类所处的位置,也就是你当前看的是那一部分的,哪一模块的,这就提出了一个概念,你必须要把你看的程序分成一个个模块 他的父类有哪些,他实现了哪些接口 2.这个类的切入点在哪,这个最重要,必须找到切入点,否则你读起程序来只会一头雾水 比如有的类,找他的初始化部分

如何阅读代码(译)

英文原文地址:https://spin.atomicobject.com/2017/06/01/how-to-read-code/?utm_source=wanqu.co&utm_campaign=Wanqu+Daily&utm_medium=website 作者:WILLIAM SHAWN "我讨厌阅读别人的代码"在所有经验层次的程序员中都普遍存在着这个问题.然而,这又是一个必备技能,特别是程序员直接使用现成代码时,如果你以正确的角度和正确的工具来处理,那将是一场很享

【009】阅读代码

阅读下面的代码,思考代码运行结果是什么? void swap(int x,int y) { int t; t =x; x=y; y=t; } void main() { int a=3, b=4; cout<<"a="<<a<<", b="<<b<<endl; swap(a, b); cout<<"a="<<a<<", b="<