/*辗转相除法求m,n(m > n)的最大公约数*/int gcd(int m,int n){if(n == 0)return m;return gcd(n,m % n);}
1: /*辗转相除法求m,n(m > n)的最大公约数*/2: int gcd(int m,int n){3: if(n == 0)4: return m;5: return gcd(n,m % n);6: }
辗转相除法,其基本原理如下:
要求两个正整数a和b(假设a大于b)的最大公约数,可以将a表示成下面的式子
a = q*b + r (1)
其中,q表示a除以b所得的商,r表示余数。
则有 r = a – q*b (2)
假设k为a,b的公因子,不妨设a=m*k,b=n*k;则(2)式可表示成
r = mk – q*n*k = (m – q*n)*k (3)
由(3)式可以看出,k也是r的因子。
得出结论:如果一个数能够同时整除a和b,则必能同时整除b和r;反过来,一个数如果能同时整除b和r,也必能同时整除a和b。即a和b的公约数与b和r的公约数是相同的,其最大公约数也是相同。
即gcd(a,b) = gcd(b,r);
C语言的实现为:
/*辗转相除法求m,n(m > n)的最大公约数*/ int gcd(int m,int n){ if(n == 0) return m; return gcd(n,m % n); }
/*辗转相除法求m,n(m > n)的最大公约数*/
int gcd(int m,int n){
if(n == 0)
return m;
return gcd(n,m % n);
}
/*辗转相除法求m,n(m > n)的最大公约数*/
int gcd(int m,int n){
if(n == 0)
return m;
return gcd(n,m % n);
}
最小公倍数 = 两个数的乘积/两个数的最大公约数,即
最小公倍数 = m*n / gcd(m,n);
test
今天早上来公司,开电脑,我的电脑上安装的是XAMPP集成建站开发包,打开XAMPP控制面板,点击Apache的start按钮,却发现始终不出现那个绿底黑字的Running.怎么好端端的Apache突然启动不起来,昨天关机睡觉之前都好好的,过了一晚上就这样了,难道他和我一样最近比较劳累,到现在还没睡醒,赖床罢工了啊?当然了,这只是个玩笑话,出现了问题就要及时解决撒。
开始分析问题解决问题。
打开Aapche的日志文件error.log。发现有如下的错误日志记录
: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to open logs
通过cmd命令行直接查看有无程序占用0.0.0.0:443:
1、运行cmd,然后输入netstat -ano,回车;
2、查看开头几行包含0.0.0.0:443的那一行最后的pid,为几个数字,把这几个数字记下来;
3、启动“任务管理器”——“进程”,在“工具栏”——“选择列”前面的框里打上勾;
4、然后找到与刚才那个pid对应的是哪个程序,很容易就会找到,就是它与0.0.0.0:443进行了绑定(bind);
原来进程VisualSVNServer.exe进程占用了0.0.0.0.0:443,我安装在xp下的SVN服务器。结束这个进程,再点击Apache的Start按钮,终于出现了那个绿底黑字的Running ,嘿嘿。
最后在这次解决问题的过程中使用了一个Windows的dos命令:netstat
在网上摘抄了这个命令的用法,记录下来,当作参考
netstat的全部参数及说明如下:
显示协议统计信息和当前 TCP/IP 网络连接。
-b 显示包含于创建每个连接或监听端口的可执行组件。在某些情况下已知可执行组件
拥有多个独立组件,并且在这些情况下包含于创建连接或监听端口的组件序列
被显示。这种情况下,可执行组件名在底部的 [] 中,顶部是其调用的组件,等等,
直到 TCP/IP 部分。注意此选项可能需要很长时间,如果没有足够权限,可能失败。
-e 显示以太网统计信息。此选项可以与 -s选项组合使用。
-n 以数字形式显示地址和端口号。
-o 显示与每个连接相关的所属进程 ID。
-p proto 显示 proto 指定的协议的连接;proto 可以是
下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议 之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 显示路由表。
-s 显示按协议统计信息。默认地,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP
和 UDPv6 的统计信息; -p 选项用于指定默认情况的子集。
-v 与 -b 选项一起使用时将显示包含于为所有可执行组件创建连接或监听端口的组件。
interval 重新显示选定统计信息,每次显示之间暂停时间间隔(以秒计)。按 CTRL+C 停止重新
显示统计信息。如果省略,netstat 显示当前配置信息(只显示一次)
原文地址:http://www.zendstudio.net/archives/create-htaccess-file-in-windows/
.htaccess是 apache的访问控制文件,apache中httpd.conf的选项配合此文件,完美实现了目录、站点的访问控制,当然最多的还是rewrite功能,即URL重写,PHP中实现伪静态的一个重要途径,也是被公认为SEO中搜索引擎友好的极为有效的一个手段。
现在的一个实际问题就是windows不允许重命名时.的前面没有字符,它认为这样的文件名是不合法的。这就造成我们无法通过重命名”新建文本文档.txt”为”.htaccess”来创建此访问控制文件,但是,事情总有解决的办法。且看下面的几个方法:
1、使用DOS命令,在DOS下有三种方法可供选择:
使用屏幕编辑命令copy con .htaccess后回车,输入内容,最后按下ctrl+z结束编辑,就成功生成了.htaccess;
使用重命名命令ren 1.txt .htaccess ,这是最常规的方法了,在windows窗口下不能执行的命令,在cmd下却如履平地;
使用重定向命令 echo. >.htaccess,这里将一个回车符输入到.htaccess,同样能创建成功;
三种方法一并截图如下:
2、用winrar的文件管理器,先新建一文本文档,然后打开winrar主界面,定位到该文件,可以直接重命名,这是我在解压一国外开源项目时,其自带的.htaccess居然能正确解压出来时,所得到的启发,当然你使用7zip之类的管理器也是可以的,OK,看截图:
3、直接通过文本编辑工具保存,例如记事本,ultraEdit等等,不过保存的时候选择所有文件就可以了,这实在是一个欠揍的方法,不过肯定不是我欠揍,欠揍的是微软,华丽截图来一张:
4、使用php中的文件创建方法,fopen,file_put_contents文件名直接取.htaccess就成。
我目前也就发现(发明?)了这么几个方法,不过应该够用吧?
有关apache的一些知识点(例如配置,参数设置等)每每有什么问题都要到google,baidu半天.
其实这些问题自己以前也碰到过很多回,结果就浪费了大量的时候在每次的网上搜索答案上,
而且每次通过搜索得到的答案都不尽相同,有几乎是最优答案的,也有勉强可用的,想再找到以前
认为写的很好的网页也甚为不容易.于是自己做一个关于Apache的笔记贴,省得以后要用了又在
网上到处搜索,同时也可以不断修改,让自己的笔记越来越完整与优秀.
首先还是从最基本的httpd.conf配置写起
(注:http.conf文件在Apache的安装目录下面的conf文件夹中)
一、配置Apache的web根目录(DocumentROOT)
想要修改Apache的web根目录,打开httpd.conf,找到DocementROOT为开头的那一行,
以我自己的http.conf文件为例:
# DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot "E:/Program Files/Apache2.2/htdocs"将DocumentROOT修改为你想设置成web根目录的路径地址
别以为现在就大功告成了,还有第二步,修改完DocumentROOT后继续往下查看httpd.conf文件
你会发现下面这几行
# This should be changed to whatever you set DocumentRoot to. # <Directory "E:/Program Files/Apache2.2/htdocs"> # # Possible values for the Options directive are "None", "All", # or any combination of:
第一行的英文注释看的懂噻?这里的Directory 中的路径要保持和上面设置的web根目录路径一致,
所以如果上面修改了DocumentROOT,这里也要把Directory改为和DoucumentROOT一致才行。
到这里配置Apache的web根目录算是完成了,保存配置文件http.conf 。
重启Apache服务器,让我们的修改生效。
二、配置Apache的虚拟目录
在这里以我配置phpmyadmin为例。下载下来phpMyAdmin的压缩文档后,解压缩到你想要将phpMyAdmin放置的地方,这里我的phpMyAdmin的物理路径地址是"E:\Program Files\phpMyAdmin”。如果你要想设置一个虚拟目录,别名(Alias)为phpmyadmin.那么可以在Apache的httpd.conf文档的<IfModule alias_module>节点里增加下面的几句
Alias /phpmyadmin/ "E:/Program Files/phpMyAdmin/" <Directory "E:/Program Files/phpMyAdmin/"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
下面的<Directory></Directory>是设置该虚拟目录的访问权限,因为Apache默认的是不能访问的。
然后保存配置文件httpd.conf,重启apache就可以了。
今天想让虚拟机中的Ubuntu访问主机XP下的文件,由于vmware-tool6.0貌似对Ubuntu9.10支持的不是很好,
在虚拟机里设置共享文件夹不起作用。于是就干脆在XP下建了一个FTP服务器,虚拟机中的ubuntu通过FTP访问
XP下的文件进行下载。
XP下建立FTP我采用的是Serv-u 9.3,安装过程很傻瓜化,下载下来的.exe文件双击就开始安装,根据提示下一步
就是了,是个人都会安,在这就不赘述了。
安装好后,我先在本机试了一下,访问FTP的目录,发现目录下中文的文件文件夹是乱码显示,在网上搜了一下,
很快就得到了解决问题的方法。
问题是Serv-U 8以后默认对所有收发的路径和文件名采用UTF-8编码,而装的中文版操作系统文件系统的编码为GB2312,导致了访问FTP时显示出来的中文文件名为乱码。
解决方案:
取消对所有收发的路径和文件名采用UTF-8编码。操作步骤为 域->限制和设置->FTP命令设置->全局属性->高级选项->对所有收发的路径和文件名采用UTF-8编码(取消前面的√)。
(over!!!)
