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

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

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

小勇的代码:

 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的算法(具体不记得),但是速度是最慢的。

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

时间: 2024-10-16 19:24:40

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

一入python深似海--变量和对象

一.基本原理 Python中一切都是对象,变量是对象的引用.这是一个普遍的法则.我们举个例子来说,Python是如何来处理的. x = 'blue' y = 'green' z = x 当python执行上面第一句的时候,会在heap中首先创建一个str对象,其文本内容为blue,同时还创建一个名为x的对象引用,x引用的就是这个str对象.第二句也是类似:第三条创建了一个名为z的新对象引用,并将其设置为对象引用x所指向的相同对象.如下图的变化. 所以看出在Python中赋值操作符号"="

一入python深似海--while-loop与for-loop

while loops 定义与实例 i = 0 numbers = [] while i < 6: print "At the top i is %d" % i numbers.append(i) i = i + 1 print "Numbers now: ", numbers print "At the bottom i is %d" % i print "The numbers: " for num in numbe

一入python深似海--list

几个实例展示python中数据结构list的魅力! list变量申明 the_count = [1, 2, 3, 4, 5] fruits = ['apples', 'oranges', 'pears', 'apricots'] change = [1, 'pennies', 2, 'dimes', 3, 'quarters'] 访问list元素 array= [1,2,5,3,6,8,4] #其实这里的顺序标识是 (0,1,2,3,4,5,6) (-7,-6,-5,-4,-3,-2,-1)#有

一入python深似海--对象的属性

Python中一切皆是对象,每个对象都可以有多个属性.Python是如何管理这些属性呢?我们来探讨一下. 属性的__dict__系统 对象的属性包含两部分:类属性和对象属性.对象的属性可能来自于其类的定义,叫做类属性.类属性可能来自于类的定义自身,也可能来自父类.一个对象的属性还可能是该对象实例定义的,叫做对象属性. 对象的属性存储在对象的__dict__属性中.__dict__为一个字典,键为属性名,对应的值为属性本身.下面是一个例子. class bird(object): feather

一入python深似海--浅拷贝与深拷贝

python中有一个模块copy,deepcopy函数用于深拷贝,copy函数用于浅拷贝.要理解浅拷贝,必须先弄清楚python中的引用. 引用 Python中一切都是对象,变量中存放的是对象的引用.这是一个普遍的法则.可以说 Python 没有赋值,只有引用.如,a=1,变量a只是整数对象1的引用. 可变对象与不可变对象及其引用 一.不可变对象 不可变对象包括:数字,字符串,元组. 由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的.

一入python深似海--函数与文件

先上写干货,几个开源网站: github.com launchpad.net gitorious.org sourceforge.net freecode.com 今天介绍一下python函数和文件读写的知识. 函数 def print_two(*args):#That tells Python to take all the arguments to the function and then put them in args as a list arg1,arg2=args print "a

一入python深似海--split

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump

一入python深似海--range()与for

range用法 使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节. 这里记录一下: range(1,5)#代表从1到5(不包含5) [1,2,3,4] range(1,5,2)#代表从1到5,间隔2(不包含5) [1,3] range(5)#代表从0到5(不包含5) [0,1,2,3,4] 再看看list的操作: array= [1,2,5,3,6,8,4] #其实这里的顺序标识是 [1,2,5,3,6,8,4] (0,1,2,3,4,5,

一入python深似海--class

python class 分为三个部分:class and object(类与对象),inheritance(继承),overload(重载)and override(覆写). class and object 类的定义,实例化,及成员访问,顺便提一下python中类均继承于一个叫object的类. class Song(object):#definition def __init__(self, lyrics): self.lyrics = lyrics#add attribution def