(第三周)c#程序理解
阅读下面程序,请回答如下问题:
问题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 =
{,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,};
for (Int64 i = ; i < Int64.MaxValue; i++)
{
int hit = ;
int hit1 = -;
int hit2 = -;
for (int j = ; (j < rg.Length) && (hit <=) ; j++)
{
if ((i % rg[j]) != )
{
hit++;
if (hit == )
{
hit1 = j;
}
else if (hit == )
{
hit2 = j;
}
else
break;
} }
if ((hit == )&& (hit1+==hit2))
{
Console.WriteLine("found {0}", i);
}
}
}
}
}
问题1:这个程序要找的是符合什么条件的数?
答. 百度之后查到Int64是有符号 64 位整数数据类型,表示 -263到263之间的整数。分析程序的功能可以采用单步调试或者笔算多步后寻找规律。在进行单步调试或者笔算几步后可以发现程序输出条件 (hit == 2)&& (hit1+1==hit2) 中 hit1+1==hit2 是要在 rg 数组中找到相邻的两个数,而 hit == 2 则要求这两个数可以同时被 i 整除。rg 中存储的是 2 ~ 31 的整数。程序的功能是找出一个数 i,i 不能被 2~31 中相邻的两个数整除,但可以被其余28个数整除。
问题2:这样的数存在么?符合这一条件的最小的数是什么?
答. 存在这样的数,23*33*52*7*11*13*19*23*29*31=2123581660200;即:16,17与其它28个数字的最小公倍数。
问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间精确到分钟(电脑:单核CPU 4.0G Hz,内存和硬盘等资源充足)。
答. 这个问题比较难啊。一开始为认为很快就会出结果,可是电脑运行了一下午运行这个程序都没有结果!
问题4:在多核电脑上如何提高这一程序的运行效率?
答. 移动端的CPU已经做到了8核心,一般电脑也是双核的。(我的电脑是双核四线程)。通常人们会认为核心数越多运行速度越快,其实对于不同类型的CPU不见得核心数多就代表高性能。例如:iPhone 的A系列CPU现在还一直坚持两个核心,但它的性能足以碾压众多厂商所生产的CPU。还有高通骁龙820处理器,从810的8核心回归到了4核心,但是性能翻倍。但是对于同一种CPU而言,肯定是核心数开的越多主频越高,处理进程的效率越高。CPU为了加快程序的运行速度就应当提高CPU的主频。一般情况下我们的电脑会在平衡模式下运行,此时的CPU并没有达到额定的最高主频。所以应当开启高性能模式。
除了开启高性能模式外,要想提高运行速度,还应当保证后台程序尽量的少。把无关紧要的进程结束。减少与外部设备的连接。
第一步、键盘同时按下“Win”键+“R”键打开运行,输入msconfig,按下回车键,即可打开系统配置窗口。
第二步、 选中“引导”选项卡,点击“高级选项”。
第三步、把“处理器数”和“最大内存”调整为电脑的最大值,点“确定”退出。此时电脑的性能是最佳的。
(第三周)c#程序理解的更多相关文章
- 20172302 《Java软件结构与数据结构》第三周学习总结
2018年学习总结博客总目录:第一周 第二周 第三周 教材学习内容总结 第五章 队列 1.队列是一种线性集合,其元素从一端加入,从另一端删除:队列元素是按先进先出(FIFO(First in Firs ...
- 三周,用长轮询实现Chat并迁移到Azure测试
公司的OA从零开始进行开发,继简单的单点登陆.角色与权限.消息中间件之后,轮到在线即时通信的模块需要我独立去完成.这三周除了逛网店见爱*看动漫接兼职,基本上都花在这上面了.简单地说就是用MVC4基于长 ...
- Coursera系列-R Programming第三周-词法作用域
完成R Programming第三周 这周作业有点绕,更多地是通过一个缓存逆矩阵的案例,向我们示范[词法作用域 Lexical Scopping]的功效.但是作业里给出的函数有点绕口,花费了我们蛮多心 ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 20145213《Java程序设计》第三周学习总结
20145213<Java程序设计>第三周学习总结 教材学习内容总结 正所谓距离产生美,上周我还倾心于Java表面的基础语法.其简单的流程结构,屈指可数的基本类型分类,早已烂熟于心的运算符 ...
- 20145304 Java第三周学习报告
20145304 <Java程序设计>第三周学习总结 教材学习内容总结 1.定义类: 类定义时使用class关键词,建立实例要使用new关键词. 代码如下: /*定义类 书上例子 衣服的型 ...
- 20145330《Java程序设计》第三周学习总结
20145330 <Java程序设计>第三周学习总结 第三周知识的难度已经逐步上升,并且一周学习两章学习压力也逐渐加大,需要更高效率的来完成学习内容,合理安排时间. 类与对象 对象(Obj ...
- 20145337《Java程序设计》第三周学习总结
20145337 <Java程序设计>第三周学习总结 教材学习内容总结 类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例.我觉得在视频中对类与对象关系的描 ...
- Linux内核设计第三周——构造一个简单的Linux系统
Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...
- 20145218 《Java程序设计》第三周学习总结
20145218 <Java程序设计>第三周学习总结 教材学习内容总结 定义类 编写程序要产生对象就要先定义类.类是对象的设计图,对象是类的实例.类定义时使用class关键词,建立实例时, ...
随机推荐
- DJI Mobile SDK 新教程
DJI Mobile SDK 新教程发布! http://bbs.dji.com/thread-20282-1-1.html Android 如何创建一个航拍相机App: 你将学到如何配置DJI Mo ...
- 服务发现系统etcd之安装和使用
一.概述 etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致 ...
- WorldWind源码剖析系列:网络下载类WebDownload
网络下载类WebDownload封装了对请求的瓦片进行网络下载的相关操作.该类使用了两个委托类型和一个枚举类型. 该类的类图如下. 网络下载类WebDownload各个字段和属性的含义说明如下: st ...
- Properties类和如何操作属性
Properties类继承关系java.lang.Object java.util.Dictionary<K,V> java.util.Hashtable<Object, ...
- MSMQ消息队列总结
1.总体介绍: http://www.cnblogs.com/beniao/archive/2008/06/26/1229934.html 2.windows服务各项参数介绍及安装 https://w ...
- 纯css实现弹窗左右垂直居中效果
1.HTML <div class="container"> <div class="dialog"> <div class=&q ...
- HDU 2709 Sumsets 经典简单线性dp
Sumsets Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- day57
JQ初级 一.认识jQuery 1.什么是jQuery jQuery是对原生JavaScript二次封装的工具函数集合 jQuery是一个简洁高效的且功能丰富的JavaScript工具库 2.jQue ...
- [Oracle]坏块处理:确认坏块的对象
如果已经知道 FILE#,BLOCK#,则 可以通过如下查询来看: SQL> SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTE ...
- mysql提示Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist解决方法
一次重启mysql发现无法启动成功,通过检查mysql日志发现问题并解决了问题. mysql启动失败的日志: [root@nn ~]# tail -n 20 /var/log/mysqld.log 1 ...