软件工程 第三周 作业

Posted Wangtn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程 第三周 作业相关的知识,希望对你有一定的参考价值。

  问题1:

  

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))

  由此段代码知,程序要在0~2的64次幂中选出一个数

  1.这个数i无法被数组中连续的两个数整除。

  2.数组中除了这两个连续的数都可以将i整除

  这便是程序寻找的数符合的条件

 

  问题2:

  如果i不能被数组中的一个数a整除,那么他也不能被a的倍数(同属于该数组)整除,当a>1时,这a与a的整数倍(最小是2a)便不会是连续的两个数

这样便不满足问题1中的条件,所以要找到i对应的两个属于数组的数,就应该排除掉a这种数,数组中小于16的数都满足该条件,所以将16之前的数都排

除掉。

  对于剩下的数,质数不作处理,将合数进行拆分,以寻找能不被其他数最小公倍数整除的合数。剩下11个合数,也就是说只要求出是个合数的最小公倍

数,然后看能否被剩下的合数整除,分别求10次,来找出符合要求的合数,如果他与一个质数相连,则符合条件。经计算,最后16,17符合要求。除去16

17,剩下数数的公倍数为2123581660200。

  问题3:

  

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

  我认为直到hit>2时跳出里层循环,循每次环的次数都是不一样的,而且不好估计均值,只知道外层循环循环了2123581660200次

所以我认为无法精确求出运行时间。

 

  问题4:

  多核电脑在循环时可以同时执行几步,效率要比单核快得多。

以上是关于软件工程 第三周 作业的主要内容,如果未能解决你的问题,请参考以下文章

1903021130-杨建-Java第三周作业-eclipse软件下编写代码并运行

软件工程第三周作业

软件工程_东师站_第三周作业

软件工程第三周作业-功能测试

软件工程第三周作业 - 功能测试

《实时控制软件》第三周作业