【2016.3.19】作业 分析一个很有(wu)趣(liao)的小程序
问题1:这个程序要找的是符合什么条件的数?
能够整除2-32中所有数仅除了在此之中的两个相邻的数,比如能整除2-29,且不能整除30,31。当然,这只是举个例子。
问题2:这样的数存在么?符合这一条件的最小的数是什么?
不知道是否存在,反正用z3735f跑了一个多小时没算出来,要算出来,估计得用超算。自己尝试算了一下2-15,2-20 都算出来了,但是再往后就费劲了。因为我不知道这个数在什么地方,因此假设他在整个搜索范围的前0.1%出现,我1.33GHZ双核的小电脑得跑好几百年。。。。so,怒扔,不算了,去网上找超算算去吧,我不算了。。。
问题3:在电脑上运行这一程序,你估计多长时间才能输出第一个结果?时间精确到分钟(电脑:单核CPU 4.0G Hz,内存和硬盘等资源充足)。
Int64是64位有符号数,正数部分为2^63,这个范围太大了,假设在范围千分之一的位置找到了这个数,也就是在9.2233720368548 × 1015处有这个数,假设机子每秒处理4.0X109步,退10000步说,假设一个时钟周期算一个数,那也需要2000000s,33333min。。。。这也太大了吧,还是去超算吧。。。。@天河二号,@AlphaGo。。。。。
问题4:在多核电脑上如何提高这一程序的运行效率?
分开算?我觉得现在超线程技术在流水线层面上已经做好了多核运算的东西,底层内核的事我们就不要操心了,另外我觉得这效率已经很高了,不需要提高,cpu使用率的70%以上都给了这个计算,导致UI非常卡顿,再提高电脑更卡顿了,如何愉快的玩耍?