• (20140707作业)一入IT深似海,从此节操是路人!~9*9乘法表&千以内素数


    这是我们老大培训第一天的作业,今后几乎左右的作业都会记录在这。

    2014-07-07

    要求:

    C#基本语法实现 九九乘法表 和1000以内所有质数

    几个新手同事,有刚毕业的学生,有做机电出身,也有硬件做硬件的。

    大家可能想法不一,所以集思广益,对于好的思路,我这里借鉴并留存。 

    大铿的代码:

     1 //求 千以内的素数
     2 using System;
     3 using System.Collections.Generic;
     4 using System.Linq;
     5 using System.Text;
     6 using System.Threading.Tasks;
     7 
     8 namespace sushu
     9 {
    10     class Program
    11     {
    12         static void Main(string[] args)
    13         {
    14             DateTime d1 = System.DateTime.Now;   //运行的当前时间
    15             Console.WriteLine("开始时间是:{0}", d1);
    16             Console.WriteLine();
    17 
    18             int n = 10000;   //定义范围
    19             int m = 0;
    20             bool t=false;    //定义因数存在变量,初始为false
    21             int count = 0;    //统计个数的变量
    22             
    23             for (int i = 1; i <= n; i++)
    24             {
    25                 if (i == 2 || i == 3)   //处理 2 3
    26                 {
    27                     count = count + 1;
    28                     Console.Write("{0}  ", i);
    29                 }
    30                
    31                 if(i%2!=0)     //排除偶数
    32                 {
    33                                       
    34                     for (int a = 2; a <= i/2; a++)   //处理除 1 以外的因数(如果存在因数,必然会存在一个小于n/2因数)
    35                     {
    36                         t = false;   
    37                         m = i % a;
    38                         if (m == 0)
    39                             break;    //整除退出循环
    40                         else
    41                             t = true;   //关键标识
    42                     }
    43 
    44                     if (t == true)   //判断质数,然后输出,统计个数
    45                     {
    46                         count = count + 1;
    47                         Console.Write("{0}  ", i);
    48                         if (count%12==0)        //输出数字排版 12列
    49                         {
    50                             Console.WriteLine();
    51                         }
    52                     }
    53                     
    54                 }
    55                 
    56             }
    57             Console.WriteLine();
    58             Console.WriteLine("{0}以内的质数个数总数是:  {1}", n, count);  //输出质数统计
    59             Console.WriteLine();
    60             TimeSpan ts = DateTime.Now - d1; //获取当前时间并计算耗时
    61             Console.WriteLine("耗时:{0}秒,{1}毫秒",ts.Seconds,ts.Milliseconds);  //输出耗时数据
    62             
    63 
    64             Console.ReadKey();
    65 
    66         }
    67     }
    68 }
    View Code

    老大点评:(这里仅仅按照我当时所理解去记录,原话已经记不太清了)

    其优点在于尽量减少循环次数,排除一定的非质数。

    小勇的代码:

     1  static void Main(string[] args)
     2 
     3         {
     4             
     5             int i=0, j = 0;
     6             for (i = 3; i <= 10000; i = i + 2)//i+2 把偶素去掉,减少运算量
     7            {
     8                //   再次减少运算量,合素分解,必有其最小因数小于或等于合数的开根号
     9                 int k = (int)Math.Sqrt(i);
    10                 for (j = 2; j <= k; j++)
    11                 {
    12                     //判断素数
    13                     if ((i % j) == 0)
    14                     {
    15                         break;
    16                     }
    17                 }
    18                 //如果j<k,说明没有判断完,送回去再判断
    19                 if (j > k)
    20                {
    21                     Console.Write(i.ToString() + " ");
    22                 }
    23             }
    24            Console.Read();
    25             
    26         }
    View Code

    这里用了 一个数学方法 (开方):

     1 int k = (int)Math.Sqrt(i); 

    问过老大这个运行起来的效率,得到的回复是这个函数 运用的是中国古代一种很牛X的算法(具体不记得),但是速度是最慢的。

  • 相关阅读:
    OCP-1Z0-053-V12.02-668题
    Oracle DB 监控和优化RMAN
    OCP-1Z0-052-V8.02-123题
    OCP-1Z0-053-V12.02-151题
    OCP-1Z0-053-V12.02-66题
    OCP-1Z0-053-V12.02-163题
    OCP-1Z0-052-V8.02-51题
    OCP-1Z0-052-V8.02-53题
    ostringstream、istringstream、stringstream
    OCP-1Z0-053-V12.02-205题
  • 原文地址:https://www.cnblogs.com/Ex-Oj/p/3834854.html
Copyright © 2020-2023  润新知