RSS
 

最大公约数

17

最大公约数(Greatest Common Divisor,简写为G.C.D.;或Highest Common Factor,简写为H.C.F.),指某几个整数共有约数中最大的一个。

两个整数的最大公约数主要有三种寻找方法:

最小公倍数(L.C.M.)的关系: G.C.D.(a, b) \times L.C.M.(a, b) = |ab|

两个整数的最大公约数可用于计算两数的最小公倍数,或分数化简成最简分数

两个整数的最大公约数和最小公倍数中存在分配律

  • G.C.D.(a,\;L.C.M.(b, c)) = L.C.M.(G.C.D.(a, b)),\;G.C.D.(a,  c))
  • L.C.M.(a,\;G.C.D.(b, c)) = G.C.D.(L.C.M.(a, b)),\;L.C.M.(a,  c))

座标里,将点(0, 0)和(a, b)连起来,通过整数座标的点的数目(除了(0, 0)一点之外)就是G.C.D.(a, b)。

 

辗转相除法

数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法。辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。

算法描述

计算过程

function gcd(a, b)
    while b ≠ 0
       t := b
       b := a mod b
       a := t
    return a

在欧几里得定义的减法版本,取余运算被减法替换。

function gcd(a, b)
    if a = 0
       return b
    while b ≠ 0
        if a > b
           a := a − b
        else
           b := b − a
    return a

 

递归版本:

function gcd(a, b)
    if b = 0
       return a
    else
       return gcd(b, a mod b)

 

除了辗转相除法之外,也有一些高效的算法存在,如二进制最大公约数算法将除法操作替换成了二进制的移位,以进一步提高用计算机运算时的效率。但是,这种改变并没有降低算法的复杂度(仍然是O(h²)),虽然它在计算机上确实比辗转相除法快些。也可以通过只检查ab的前几位数来进一步提高效率,不过效果并不明显。二进制版的算法还可以扩展到其它进制,效率最多可以提升五倍。

另外,最小公倍数 = A*B/最大公约数

 
 

素数[质数]

14

素数,亦称质数,指在一个大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为包含1和本身的因子等于2个)。

比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着很重要的地位。

最小的素数是2,也是素数中唯一的偶数(双数);其他素数都是奇数(单数)。素数有无限多个,所以不存在最大的素数。

算术基本定理证明每个大于1的正整数都可以写成素数的乘积,并且这种乘积的形式是唯一的。因此素数也被称为自然数的“建筑的基石”。例如:

23244 = 2^2 \times 3 \times 13 \times 149

这个定理的重要一点是,将1排斥在素数集合以外。如果1被认为是素数,那么这些严格的阐述就不得不加上一些限制条件。

0由于可以被任何数整除(因余数一定等于0),所以它不符合素数的定义。

Read the rest of this entry »

 
No Comments

Posted in 笔记

 

数学分类开放

14

大家都接受: 程 序  = 算法 + 数据结构

数据结构我觉得是算法的配合物,而算法则与数学是息息相关。

为了提高数学和算法修养,OPEN MIND  ,决定开放数学分类。

数学分类主要提供各种数学信息,不仅仅是算法。

楼要慢慢盖,所以会在今后慢慢完善,另外欢迎有数学资料的同学交流分享,共同学习!

 

 
 

日本地震引发的一些问题

13

3月11日,日本近海发生里氏8.8级地震,震后引发巨大海啸。官方目前估计有1700余人遇难,经济损失或达150亿美元。

对于处于地震带上的日本人民,几乎一辈子都要与这种天灾进行战斗。8.8级大地震后建筑物的完好和民众有序的逃生措施证明了在与地震长期较量中获得的成果,但这也都是血的教训换来的。

地震发生后,网络上热闹非凡,大多数立刻开始站队,要么祈福,要么诅咒。

两队队员对于发表了各自的理由并且抨击对方“无人性”或者“假虚伪”等等。

我们不讨论道德问题,那太虚假了,我说另外一个问题——表态。

表态这事情分3个层面:个人 、 民族  、 国家。

极大数量的个人的声音汇聚起来形成民族,最后被国家代表。而国家是政治机器,追逐国家利益,民族感情只是手中的牌而已,外交部会替国家代表我们打这张牌,至于怎么打,由国家机器决定,底层的个人永远都只能代表自己。

换句话说,个人的表态只能代表个人;国家的表态代表国家以及民族;民族只能被代表,因为只有国家拥有发表民族性言论的话语权,而底层民众的声音是无法统一而形成有效决策的。当国家决定做某件事情的时候,民族感情是可以选择忽视的,个人感情就更不要提了,情愿不情愿你都必须硬着头皮上。但放心他们绝对不会乱来,“机器”比个人理智得多也更有分寸。

在处理人道救援这种国际问题上,国家比我们更清楚代表中国人民怎么做最合适。

所以无论两队队员们吵得如何凶猛,都无法做出什么有实质意义的改变,只能从个人的某些角度出发做出一些表态罢了。日本政府不会因为你的人道主义援助而放弃钓鱼岛,也不会因为网络上有诅咒的言语向你挑衅,在他们的眼里只有影响东亚局势的实力选手们,没有人民什么事儿。

云南那边也发生了地震还有灾民在等待救援,忽视了他们就没资格算作民族的一员,你的态度就更没有意义。

如果你不抱不切实际的幻想(自作多情),那么至于站哪边做什么都无所谓,理由可以可无,结果一样也是无所谓。

对于我们个人,“以德报德,以直报怨”最合适。

 
No Comments

Posted in 呓语

 

新年第一篇

06

犯了一次持续时间N长,效果N强的懒,结果就是好几个月都没有更新(其实最多也就2个月),忏悔一下……

最后一年的寒假过得非常lazy & comfortable ,几乎什么活都没有做,每天都是晚上2~4点睡觉,早上10~12点起,时间倒是非常充足的保持在8个小时左右,这么舒坦的日子恐怕以后都不会有了。

同学们今年也见了不少,三国杀的盛行让大家的聚会变得很容易(再次感谢这款游戏,不多说了),只是不知道多年以后如果它不再流行了我们又当如何。考研的还是挺多的,目前看来还都算是比较顺利基本都能进复试,相当的好。也有考公务员的,不过好像运气就没那么好了,继续加油吧~~

家园这几届的孩子都特别争气,大二的论坛运营的有声有色,大三都找好了实习,而且都是响当当的大公司,大家聚会的时候感觉都特别自豪特别开心。早就认为为家园一定会打造成一个每个人都有强烈优越感和责任感的强大集体,每个人都会找到自己实现价值的闪光点,现在看来这个趋势是越来越明显了,衷心的祝愿大家都能找到自己最喜欢的道路。(我也羡慕一下,年轻就是好~~~)

剩下的主要就是毕业设计了……唉……不说了,开题答辩过了,后面的自己想办法完成吧,自己选得别人也帮不上,上帝保佑。

好希望能在毕业前跟同学们打打牌喝喝酒聊聊天,趁着天气回暖锻炼身体拔除懒筋,再学一点自己喜欢的东西培养一下兴趣好爱,在家园跟B哥昆哥一起做一点有用的东西,去图书馆看看书把自己的脑子弄得灵光一点……

5月就要回公司了,想想也就没几个星期,时间过得不要太快啊~~

最后感谢磊叔的晚餐,祝她的百度之旅一帆风顺~~~

 
2 Comments

Posted in 画心

 

WEB安全分享会——PHP安全规范

12

圣诞节前夜那天的分享会,郁总指定咱跟几位同事一起讲讲安全规范的东东。

以前没怎么注意过,专门去查了一些资料,也算对PHP的历史问题补了一下课~~~

总体上,还是那些原则:

  1. 用户的所有输入都是有害的,必须做充足的过滤处理,绝对不能过度依赖用户输入参数。
  2. 具有eval性质的所有函数都必须小心使用。
  3. 限制PHP运行时的权限(禁用部分函数、设定可执行的文件的目录、可操作文件的权限[777 ? NO!])
  4. 配置安全的php.ini
  5. 日志,审计
  6. 基本的web安全常识(GE T POST什么时候用,XSS等)

差不多就这些了,另外附加了一部分攻击,不多扯皮了,上ppt吧~

 
2 Comments

Posted in PHP, 笔记

 

介绍一个入侵检测系统PHPIDS

21 十二

今天咱们介绍一个叫做PHPIDS的东东。

IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”。专业上讲就是依照一定的安全策略,通过软、硬件,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。

PHPIDS顾名思义是一个PHP的IDS系统(官方网站 http://php-ids.org , 下载页面是http://php-ids.org/downloads/)

下载后解压出来有3个文件夹docs, lib ,tests。

使用方法比较简单,先对lib\IDS\config\config.ini进行设置。

设置包括各种路径,日志记录(支持mail和db),cache设置(支持file,memcache,db,SESSION)。

然后在要使用的系统中包含docs下的example文件即可(当然喜欢的话也可以用php.ini中的auto_prepend_file开启全局加载)
样例使用文件如下:

  require_once 'IDS/Init.php';
  $request = array(
      'REQUEST' => $_REQUEST,
      'GET' => $_GET,
      'POST' => $_POST,
      'COOKIE' => $_COOKIE
  );
  $init = IDS_Init::init('IDS/Config/Config.ini');
  $ids = new IDS_Monitor($request, $init);
  $result = $ids->run();
 
  if (!$result->isEmpty()) {
   // Take a look at the result object
   echo $result;
  }

怎样,很简单吧~~
该IDS系统会提取用户提交的REQUEST GET POST COOKIE信息进行分析,根据其XML库文件中的规则进行匹配计算并得出最终的风险值(impact),一般来说,普通的请求在5-20,而典型的攻击则会达到50~150。所以通过监测大于一定数值的impact你可以对一些潜在的危险用户进行针对性的跟踪并记录他的行为并提交给技术人员进行分析,同时也可以警告这些非法用户甚至进行屏蔽处理达到主动防御的效果。

目前IDS该项目仍然在升级,为了避免被最新的漏洞攻击,最好定期去升级一下检测规则。

有兴趣的同学可以去http://demo.php-ids.org/试一下效果~~~

 
No Comments

Posted in PHP, 笔记

 

用php查看你的目录

18 十二

嗯……长久没发东西了,补一个小玩意儿吧
PHP里面有个SPL(Standard PHP Library),里面实现了一些很有意思的东西,可以让我们拜托一串串又丑又长的代码……
SPL里面的函数有很多都跟迭代器、数据类型、接口等有关,基本上就是一下高级东东的封装,还有设置一些autoload的东西(这东西的流氓用法下回再讲)。
今天说一个用SPL里面的DirectoryIterator进行目录迭代爆出你的目录和文件的例子。
直接上代码:

 
$path="E:\\TDDOWNLOAD";   //此处指定目录
function NormalDirectoryIterator($path,$prefix=''){
    $files = new DirectoryIterator($path);    
    foreach ($files as $file)
        if(!$file->isDir())
            echo $prefix,'File: ',$file->getPathName(),'<br />';
            else{
                if($file->isDot()) continue;
                echo $prefix,'Dir: ',$file->getPathName(),'<br />';
                NormalDirectoryIterator($file->getPathName(),$prefix.'|-');
            }
}
 
NormalDirectoryIterator($path);

怎么样,够简单吧……
里面出现了这么几个类型
DirectoryIterator
SplFileInfo
可以去cn.php.net看具体说明,我就不废话了。

迭代器是个好东东,要合理利用哦~

 
2 Comments

Posted in PHP, 笔记

 

PHP中empty isset is_null用法说明

06 十二

一般情况下关于变量存在的判断就是empty isset is_null 这3个:
empty
如果变量是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、undefined以及没有任何属性的对象都将被认为是空的,如果 $var 为空,则返回 TRUE。
特别注意,empty里面的参数只能是变量,不能是表达式和常量,比如empty($b=$a) 、empty(’0′) 这样必然错,只能empty($var);
isset
如果变量存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。

注意,isset对于NULL值变量,特殊处理。

特别注意,isset与empty一样,里面的参数也只能是变量,不能是表达式和常量

is_null
检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE

注意:未定义变量传入后会出错!

上面3个函数在使用的时候要特别小心,比如:如果id为0或者为”是合法的情况,则不能用empty进行判断,一定要用isset。

需要判断一个变量是不是NULL,要先isset($var),然后在里面套用is_null($var)。

 
No Comments

Posted in PHP, 笔记

 

用php建立SOAP Web Service的方法

30 十一

先科普一下Web Service:
Web Service 是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。 Web Service是一种应用程序,它可以使用标准的互联网协议,像超文本传输协议(HTTP)和XML,将功能纲领性地体现在互联网和企业内部网上。可将Web服务视作Web上的组件编程。

再科普一下SOAP协议:
SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

再科普一下WSDL:
Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。

OK,热身完毕,开始正文: PHP中建立web Service,一般有的是这么几种方法: Read the rest of this entry »

 
 
 
Content Protected Using Blog Protector Plugin By: Make Money.