zoukankan      html  css  js  c++  java
  • 第三周作业2

    阅读下面程序,请回答如下问题:

    问题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 =
                {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,
     20,21,22,23,24,25,26,27,28,29,30,31};
                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))
                    {
                        Console.WriteLine("found {0}", i);
                    }
                }
            }
        }
    }

     

    个人理解:首先定义整形数组rg【2~31】,目标数除以数组rg中顺序连续两个元素余数不等于0,除以其他元素余数等于0。这样的数应该存在,但是很大,查询资料未果,但是可以预计直接运行此程序求得的话恐怕即使只是第一个数也需要很长时间。在电脑上运行这一程序,电脑cpu频率4.0g,每秒运算4*2^30次,第一个结果应该是(30-2)个数的最小公倍数,应该很大,程序的计算量也很大,预计计算出要超过120min。在多核电脑上优化程序,调用多个核心同时进行遍历,可以提高运行效率。

  • 相关阅读:
    JDBC
    Android--RelativeLayout
    Android--开发过程中使用到的长度单位
    java--进步学习IO
    java--从控制台读入一些数据
    java--IO
    C语言数据结构-创建链表的四种方法
    标准I/O库函数的缺陷
    Java四种引用包括强引用,软引用,弱引用,虚引用
    算法导论答案(1-11)
  • 原文地址:https://www.cnblogs.com/tonyztx/p/5299512.html
Copyright © 2011-2022 走看看