黑马程序员技术交流社区

标题: 非官方技术分签到帖!仅准备进十期马友交流贴 [打印本页]

作者: §風過無痕§    时间: 2013-9-6 19:11
标题: 非官方技术分签到帖!仅准备进十期马友交流贴
本帖最后由 §風過無痕§ 于 2013-9-12 10:19 编辑

左盼右盼
             前盼后盼
                             第10届ASP.Net+Android+IOS黑马学员交流   终于开版啦!
                                    
                                          第十期  我的目标  我来啦!

                                                                             签 到!
{:soso_e200:}                        {:soso_e200:}                      {:soso_e200:}                        {:soso_e200:}
{:soso_e163:}                        {:soso_e163:}                      {:soso_e163:}                        {:soso_e163:}              



真诚的说声抱歉 让马友们误会了   这里不是版主们贴的加分题  我个人的签到帖及与马友交流贴!

看见第九届有位马友谈到的面试题之一   求素数:
特意贴出个人代码共同讨论求马友优化:

  1. <P>using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace 素数判断
  6. {
  7.    class Program
  8.   {

  9.       static void Main(string[] args)
  10.      {
  11.               Console.Write("请输入一个数:");
  12.               int n = Convert.ToInt32(Console.ReadLine());
  13.               ExSushu  p = new ExSushu();
  14.               bool flag = p.exSushu(n);
  15.               if (flag)</P>
  16.               {
  17.                   Console.WriteLine("{0}是素数", n);</P>
  18. <P>              }
  19.              else
  20.              {
  21.                      Console.WriteLine("{0}不是素数", n);
  22.              }
  23.              Console.ReadKey();
  24.      }

  25.   class ExSushu
  26.   {
  27.         public bool exSushu(int n)
  28.   {
  29.            bool b = true;
  30.            if (n == 1 || n == 2)
  31.           {b = true;}
  32.           else
  33.           {
  34.                  int number =(int) Math.Ceiling(Math.Sqrt(n));
  35.                  if (Math.IEEERemainder(n, number) == 0)
  36.          }
  37.          b = false ;
  38.    }
  39.   else
  40.   {
  41.            b = true ;
  42.   }
  43. //int sqr = Convert.ToInt32(Math.Sqrt(n));
  44. //for (int i = sqr; i > 2; i--)
  45. //{
  46. //       if (n % i == 0)
  47. //      {
  48. //         b = false;
  49. //      }
  50. //}
  51. }
  52. return b;

  53.     }
  54.    }
  55.   }</P>
  56. <P>}</P>
复制代码
[qq]236418111[/qq]





作者: ℡跡....    时间: 2013-9-6 20:27
顶一个!!!!
作者: 曹伟    时间: 2013-9-6 22:31
左盼右盼
             前盼后盼  来了
作者: 陈行    时间: 2013-9-6 23:22
签到啊  准备应聘版主中,自己顶!!!!!!!!!
作者: 白天看见了月球    时间: 2013-9-7 00:12
签到呀!!!!!!
作者: 吴光新    时间: 2013-9-7 09:13
足~~迹~~~
作者: 七里香    时间: 2013-9-7 20:23
我也想进第十届啊,能不能给点分{:soso_e100:}
作者: §風過無痕§    时间: 2013-9-7 22:06
七里香 发表于 2013-9-7 20:23
我也想进第十届啊,能不能给点分

这位马友!你现在可以一边看视频学基础知识!一边走入学流程       现在 第10届的版主们应该还没到位!               多讨论  多解答其它马友的疑惑!   技术分会有的噢!
作者: 杨靖    时间: 2013-9-9 09:18
坐等新版主现身
作者: 宋清飞    时间: 2013-9-9 21:51
是啊,终于盼来第十期了
作者: §風過無痕§    时间: 2013-9-9 21:58
宋清飞 发表于 2013-9-9 21:51
是啊,终于盼来第十期了

一起努力 一起共勉~
作者: 宋清飞    时间: 2013-9-9 22:09
§風過無痕§ 发表于 2013-9-9 21:58
一起努力 一起共勉~

嗯,两个月后见!
作者: 念念念念_、    时间: 2013-9-11 12:35
真不知道,原来十期已经有板块了,顶起来!{:soso_e185:}
作者: 淡忘回忆    时间: 2013-9-11 15:27
同签同签
作者: §風過無痕§    时间: 2013-9-11 16:30
念念念念_、 发表于 2013-9-11 12:35
真不知道,原来十期已经有板块了,顶起来!

顶 黑马!共勉!!
作者: 大虾挂了    时间: 2013-9-11 16:54
啊,同希望进入第十届,正在寻觅加分机会
作者: 董志伟    时间: 2013-9-11 18:41
顶这帖有技术分吗?
作者: §風過無痕§    时间: 2013-9-11 19:16
董志伟 发表于 2013-9-11 18:41
顶这帖有技术分吗?

抱歉喔!亲    我不是版主 也不是管理员!

            这是我个人为了庆祝第十届开版的签到帖!

                                关于技术分嘛!等第十届的版主们都到位后  ,会根据你们的提问 解答  分享 及活动的参与 酌情的给与加分!

作者: 神之梦    时间: 2013-9-11 20:21
{:soso_e113:}
作者: haxyek    时间: 2013-9-11 22:52
代码真该整理整理~~·
作者: 大虾挂了    时间: 2013-9-12 21:53
那个求是否是素数的代码给我看的彻底晕了,在VS上直接给我报了21个错误啊!!!!发现多了好多</P>,这是神马东东,百度了一下说是Html中的分段,不懂,就都给删掉了,然后也不行,按自己的想法删改了几个大括号,话说注释掉的那部分到底要不要啊,最后剩下一个错误实在不知道怎么回事了。为什么有一个if但是却有两个else啊。
所以最终没太明白算法。看起来好简单的样子,难道就是验证下n能否整除n平方根向上取整的那个数就行了?这肯定不对吧。


作者: haxyek    时间: 2013-9-12 22:03
宋清飞 发表于 2013-9-9 22:09
嗯,两个月后见!

两个月。。。日期看错了。。还以为10月开班呢,,工作辞了。。郁闷。。

作者: §風過無痕§    时间: 2013-9-13 09:27
大虾挂了 发表于 2013-9-12 21:53
那个求是否是素数的代码给我看的彻底晕了,在VS上直接给我报了21个错误啊!!!!发现多了好多,这是神马东 ...

与<p>无关   那玩意儿是在发帖 编辑贴子的时候自动补上的  是HTML标记语言中的一个标记(段落)元素      素数:只能被1和其本身整除 (不能被其它数整除)的数  叫素数!


              但我比较疑惑的是 : 为什么判断的条件是整除以大于1到小于该数的开平方数呐     求解啊!

作者: 大虾挂了    时间: 2013-9-13 13:02
§風過無痕§ 发表于 2013-9-13 09:27
与无关   那玩意儿是在发帖 编辑贴子的时候自动补上的  是HTML标记语言中的一个标记(段落)元素      素 ...

有没有可以正常运行的代码啊,那2个else是怎么回事啊,求一个可以运行的代码。
连for循环都没有,也就是说他只通过一次判断能否整除自己的平方根向上取整的数就能确认是否是素数?

作者: 大虾挂了    时间: 2013-9-13 13:08
§風過無痕§ 发表于 2013-9-13 09:27
与无关   那玩意儿是在发帖 编辑贴子的时候自动补上的  是HTML标记语言中的一个标记(段落)元素      素 ...

才看懂你说的意思,你的意思是注释里的内容么?开始没注意这里,这个算法好给力。。。。。~~~~(>_<)~~~~ ,我想想怎么解释这个问题。

作者: 大虾挂了    时间: 2013-9-13 13:29
这里只说下注释部分代码的原理吧。一个数如果不是素数,那么它肯定能拆分成几个因子相乘,假设合数k=a*b*c*d.........这些因子中,最小的那个因子,最大的时候可能是多少(这里听起来可能有点绕),我们就从2验证到这个数即可。反过来说,如果一个数是合数,那么他的最小因子不会超过多少呢?验证到这个数就行了。如果验证完发现不存在最小因子,那么直接说明了不存在因子,因为存在因子必然能找到最小的那个。
这个最小的数最大可能为多少呢?最坏的情况就是这个合数只能拆成2个质数,也就是m=a*b,这两个数里最小的那个最大不会超过多少呢?自然是a和b相等的时候,这个最小的因子获得了它可能取得的最大值(根号m)。如果a和b不相等,必然一个大于(根号m),一个小于(根号m),此时最小因子是小于(根号m)的。
综上,一个合数m可能的最小因子不会超过(根号m),所以如果从2验证到(根号m)(这里应该向下取整就行,不用向上取整),都没有找到一个因子,那么证明这个数根本就不存在最小因子,也就是不存在因子。

这个题也可以稍微优化一点,把奇数偶数分开讨论,偶数不必说。如果是奇数,只需要从3开始验证,然后每次+2验证。(2不是任何一个奇数的因子,所以说奇数更不会有其他偶数的因子)
作者: 大虾挂了    时间: 2013-9-13 14:17
这样应该就好了
  1. using System;

  2. using System.Collections.Generic;

  3. using System.Linq;

  4. using System.Text;



  5. namespace ConsoleApplication2
  6. {

  7.     class Program
  8.     {

  9.         static void Main(string[] args)
  10.         {
  11.             string flag = "";
  12.             do
  13.             {
  14.                 int j = 3;

  15.                 Console.WriteLine("请输入一个正整数,我们将判断是否为素数");

  16.                 int num = Convert.ToInt32(Console.ReadLine());
  17.                 if (num == 2)
  18.                     Console.WriteLine("2是素数");

  19.                 else if (num % 2 == 0)

  20.                     Console.WriteLine("{0}不是素数,可以被2整除", num);

  21.                 else
  22.                 {

  23.                     for (; j <= (int)Math.Sqrt(num); j += 2)
  24.                     {

  25.                         if (num % j == 0)

  26.                             break;

  27.                     }

  28.                     if (j >= ((int)Math.Sqrt(num)) + 1)  //这里选择+1很重要,+2是错误的

  29.                         Console.WriteLine("{0}是素数", num);

  30.                     else

  31.                         Console.WriteLine("{0}不是素数,可以被{1}整除", num, j); //人性化一点给出不是素数的证据

  32.                 }
  33.                 Console.WriteLine("输入y退出,其他继续");
  34.                 flag = Console.ReadLine();

  35.             } while (flag != "y" );

  36.             Console.ReadKey();


  37.         }

  38.     }

  39. }
复制代码

作者: 落淚的愛ゝ    时间: 2013-9-13 20:04
求技术分!{:soso_e120:}
作者: 宋清飞    时间: 2013-9-14 14:38
haxyek 发表于 2013-9-12 22:03
两个月。。。日期看错了。。还以为10月开班呢,,工作辞了。。郁闷。。
...

o(╯□╰)o

作者: liubeimeng    时间: 2013-10-10 15:25
期待。期待。好好努力,准备中。
作者: 黑马小子    时间: 2013-10-25 10:46
今天刚刚来,冒个泡,希望技术分能上10
作者: §風過無痕§    时间: 2013-10-25 13:00
黑马小子 发表于 2013-10-25 10:46
今天刚刚来,冒个泡,希望技术分能上10

亲 !到这里去签到吧!
官方签到帖:http://bbs.itheima.com/thread-91914-1-1.html
作者: 黑马小子    时间: 2013-10-25 13:16
十分感谢你的回复




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2