首页 > 代码库 > (20140707作业)一入IT深似海,从此节操是路人!~9*9乘法表&千以内素数
(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 Program11 {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; //定义因数存在变量,初始为false21 int count = 0; //统计个数的变量22 23 for (int i = 1; i <= n; i++)24 {25 if (i == 2 || i == 3) //处理 2 326 {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 else41 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 }
老大点评:(这里仅仅按照我当时所理解去记录,原话已经记不太清了)
其优点在于尽量减少循环次数,排除一定的非质数。
小勇的代码:
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 }
这里用了 一个数学方法 (开方):
1 int k = (int)Math.Sqrt(i);
问过老大这个运行起来的效率,得到的回复是这个函数 运用的是中国古代一种很牛X的算法(具体不记得),但是速度是最慢的。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。