这是一个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
答:前几问还能大概知道方向,这一问,,,,完全不知道