代码改变世界

第三次作业 阅读程序有符号 64 位整数数据类型

2016-03-19 19:20  林微夕雅  阅读(207)  评论(1编辑  收藏  举报

这是一个C++程序,,,额,看着头痛(额,说实话,由于中间有一年多没上过学,再加上最开始也学的很一般,读起来累)不过什么东西慢慢来总能越来越好

问题一:

答:

首先Int64 i 是表示有符号 64 位整数数据类型,这个数i范围很大 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )。。。。我表示大学这么几年,程序里面遇见这种情况的次数少

由此可见学校的东西和实际毕竟还是差距很大

然后看for循环

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;
          }

这是表示在程序去找某个数的时候执行的过程,如果一个数能让在rg数组的数无法进行整出,那么就标记下,最多两次

之后的

if ((hit == 2)&& (hit1+1==hit2))
        {
          Console.WriteLine("found {0}", i);
        }

表示,如果在执行过程中发现了这两次无法整除的情况在rg数组里面的数相邻的话,那么就输出那个数

 

问题二

答:首先作为第一判断,因为i范围足够大,那么大胆的预测这个数肯定存在,只是需要时间找而已。

不过说实话,我觉得奇怪的地方是这里,我不太清楚在那个for循环里面的i值是怎么取得

那从小开始的话,那么2就已经满足了,因为在数组里面的第二个和第三个数就比他大,就不能整出,而且hit==2,,,那不就直接结果了,

因为从程序看,那就有这样的情况:第二和第三个数都不能把i整出,那程序就不继续执行了,,,无从判断后面的第四第五个数是不是也不能把i整除

额,当然,也有可能是压根没看懂,,,,

如果是后面要全执行,那就要求要被数组中连续两个数整出而可以被其他的28个数整出,那这样的的话,就是吧所有的数分解因子,在怎么算,但是具体这个数是多少,,,额,还真不会算。但是因为数组就是2到31,所以这个数最大也就是2x3x4x5.........x30x31肯定小于int64,所以肯定存在

 

问题3

答:额,因为数是多少我不知道,所以这一问就更不用说了,,,

 

问题4

答:前几问还能大概知道方向,这一问,,,,完全不知道