﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>f(Program,Poet)=Programet &#187; 自由</title>
	<atom:link href="http://blog.programet.org/tag/%e8%87%aa%e7%94%b1/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.programet.org</link>
	<description>f(诗,程序)=诗序=思绪 &#124; 记载我们自己的生活</description>
	<lastBuildDate>Tue, 07 Feb 2012 16:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>手机上的越墙天梯——Snaptu</title>
		<link>http://blog.programet.org/2010/10/%e6%89%8b%e6%9c%ba%e4%b8%8a%e7%9a%84%e8%b6%8a%e5%a2%99%e5%a4%a9%e6%a2%af%e2%80%94%e2%80%94snaptu.html</link>
		<comments>http://blog.programet.org/2010/10/%e6%89%8b%e6%9c%ba%e4%b8%8a%e7%9a%84%e8%b6%8a%e5%a2%99%e5%a4%a9%e6%a2%af%e2%80%94%e2%80%94snaptu.html#comments</comments>
		<pubDate>Sat, 23 Oct 2010 13:22:59 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[图片]]></category>
		<category><![CDATA[自由]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=3356</guid>
		<description><![CDATA[最近我的笔记本悲剧地出了硬件问题，寄回原厂维修，估计还有蛮久的样子……于是有需要的时候只能依靠舍友的救济来完成需要依靠电脑进行的各种活动。如何用手机上推就变成了一个需要解决的问题。 我尝试过手机访问在线代理网站，发现一个站点速度不错，但是因为不是直接访问，所以每次登陆都要输入一次账号密码，很是麻烦。突然回想起以前曾经在手机上面下过一个传说可以用twitter的软件，叫做Snaptu，官方网站是http://snaptu.com/。 这是一个免费的java软件，只要能运行java的机器基本上都能够运行它。Snaptu的特色在于它集成了很多社会化网站的功能于一身，例如facebook，twitter，以及天气预报，RSS订阅等实用功能——甚至支持将你的Google Reader内容导入其中。只需要用你的手机访问http://m.snaptu.com/，便可下载到这个java软件。软件的twitter界面大概是这样的（图片截自官网，与实际情况相似）： 不过这里要补充说明一下：如果想要访问这个网以及正常使用这个软件，你需要将手机的网络接入点设置成cmnet。而不同的手机有不同的设置方法，所以我这里也就不再继续详解了，大家自行去搜索吧。 这个软件本来是一个面向英国用户的应用集成特色软件，之所以能协助我们翻墙的原理就是它为了方便集中这些应用，弄了一个自己的形式上的&#8221;appstore&#8221;——其实是免费的store~所以自身带有一个中转服务器，至今没有被墙掉，于是便起到了一个代理的作用，歪打正着地吸引了大量特殊用户。大家赶紧趁其仍健在的时候玩玩吧！ 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 关于《生命游戏》和细胞自动机 夜空下的萤火虫——《众里寻他》番外 深蓝的第一次比赛
相关文章：<ol>
<li><a href='http://blog.programet.org/2008/08/blog-post_28.html' rel='bookmark' title='关于《生命游戏》和细胞自动机'>关于《生命游戏》和细胞自动机</a></li>
<li><a href='http://blog.programet.org/2011/11/%e5%a4%9c%e7%a9%ba%e4%b8%8b%e7%9a%84%e8%90%a4%e7%81%ab%e8%99%ab%e2%80%94%e2%80%94%e3%80%8a%e4%bc%97%e9%87%8c%e5%af%bb%e4%bb%96%e3%80%8b%e7%95%aa%e5%a4%96.html' rel='bookmark' title='夜空下的萤火虫——《众里寻他》番外'>夜空下的萤火虫——《众里寻他》番外</a></li>
<li><a href='http://blog.programet.org/2009/03/blog-post_23-2.html' rel='bookmark' title='深蓝的第一次比赛'>深蓝的第一次比赛</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>最近我的笔记本悲剧地出了硬件问题，寄回原厂维修，估计还有蛮久的样子……于是有需要的时候只能依靠舍友的救济来完成需要依靠电脑进行的各种活动。如何用手机上推就变成了一个需要解决的问题。</p>
<p><span id="more-3356"></span></p>
<p>我尝试过手机访问在线代理网站，发现一个站点速度不错，但是因为不是直接访问，所以每次登陆都要输入一次账号密码，很是麻烦。突然回想起以前曾经在手机上面下过一个传说可以用twitter的软件，叫做Snaptu，官方网站是http://snaptu.com/。</p>
<p>这是一个免费的java软件，只要能运行java的机器基本上都能够运行它。Snaptu的特色在于它集成了很多社会化网站的功能于一身，例如facebook，twitter，以及天气预报，RSS订阅等实用功能——甚至支持将你的Google Reader内容导入其中。只需要用你的手机访问http://m.snaptu.com/，便可下载到这个java软件。软件的twitter界面大概是这样的（图片截自官网，与实际情况相似）：</p>
<p><img class="aligncenter size-full wp-image-3357" title="Snaptu" src="http://blog.programet.org/wp-content/uploads/未命名.jpg" alt="" width="441" height="354" /></p>
<p>不过这里要补充说明一下：如果想要访问这个网以及正常使用这个软件，你需要将手机的网络接入点设置成cmnet。而不同的手机有不同的设置方法，所以我这里也就不再继续详解了，大家自行去搜索吧。</p>
<p>这个软件本来是一个面向英国用户的应用集成特色软件，之所以能协助我们翻墙的原理就是它为了方便集中这些应用，弄了一个自己的形式上的&#8221;appstore&#8221;——其实是免费的store~所以自身带有一个中转服务器，至今没有被墙掉，于是便起到了一个代理的作用，歪打正着地吸引了大量特殊用户。大家赶紧趁其仍健在的时候玩玩吧！</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2008/08/blog-post_28.html' rel='bookmark' title='关于《生命游戏》和细胞自动机'>关于《生命游戏》和细胞自动机</a></li>
<li><a href='http://blog.programet.org/2011/11/%e5%a4%9c%e7%a9%ba%e4%b8%8b%e7%9a%84%e8%90%a4%e7%81%ab%e8%99%ab%e2%80%94%e2%80%94%e3%80%8a%e4%bc%97%e9%87%8c%e5%af%bb%e4%bb%96%e3%80%8b%e7%95%aa%e5%a4%96.html' rel='bookmark' title='夜空下的萤火虫——《众里寻他》番外'>夜空下的萤火虫——《众里寻他》番外</a></li>
<li><a href='http://blog.programet.org/2009/03/blog-post_23-2.html' rel='bookmark' title='深蓝的第一次比赛'>深蓝的第一次比赛</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/10/%e6%89%8b%e6%9c%ba%e4%b8%8a%e7%9a%84%e8%b6%8a%e5%a2%99%e5%a4%a9%e6%a2%af%e2%80%94%e2%80%94snaptu.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>推荐时间：初探思维导图</title>
		<link>http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html</link>
		<comments>http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html#comments</comments>
		<pubDate>Sat, 17 Apr 2010 18:36:54 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[科普]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[思维]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[策略]]></category>
		<category><![CDATA[自由]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2327</guid>
		<description><![CDATA[（准确地说应该是）昨天，xxy发给我一个软件Mindjet MindManager Pro 6——是一个帮助制作思维导图的软件。思维导图我以前就听说过了，但是一直都没有认真地去研究和使用这个东西。不过昨天我确实是意识到了这个玩意的强大之处。 华东数模邀请赛17号开始，于是我和zxy以及wzq开始了青涩的数模之路的第一天——杯具的是题目前一天晚上就发布了……不过对于我们这种大一的来说，选题其实是一个很简单的事情。于是我们断断续续地开始了讨论。下午和wzq在宿舍讨论了一个多小时，他就有事闪人了（一个星期的数模比赛时间真是……轻松啊）。我留在宿舍又无所事事，正好xxy把这个东西（- -附带了keygen的）丢给了我。 这个软件还挺和谐的，有着比较详细的上手动画教程，令我等新手马上就可以知道用法与最基本的快捷键。之前我和wzq讨论时将东西都列在草稿纸上，感觉很散乱。所以我尝试了一下用思维导图的方式来表达我们的讨论结果。感想就是：虽然思维导图本身的想法简单，但是却与按行文格式来思考的传统方式有着很大的区别。思维导图最大的优点就是他的散射状。一旦所有的句子与陈述都铺排在一张大大的纸上，我就突然感觉到了各个东西之间的关联。估计还是因为普通列表的结构本质上是一维的，所以各个部分之间如果有着复杂的联系难以关联起来，只能像代码缩进一样标示某一块相关联内容的层级。而思维导图本身是二维的，同时长得有点像多叉树，无论是视觉上还是逻辑上都有很清晰的层次结构。个人认为二维结构带来的最大好处就是对内容的变化可以很好的控制，比如我在使用传统列表的方式进行记录整理，突然间想加入一个关键的二级内容，突然发现该插入的地方已经写下了其他的东西，怎么办？只能加个插入号然后往旁边挤着塞进去，这样一来既不美观又破坏了原有的代码缩进式的层次表示。用思维导图就不会遇到这样的问题，直接画一条线延伸到空地，然后该写啥写啥。下面这图就是一个纯粹展示结构的例子，topic部分没有作修改——有没有很直观很清晰的感觉？ 我鼓捣完这些东西就去排球队训练了（果然一个星期很闲……）。晚上三个人终于一起凑在我宿舍，开始头脑风暴——这种信息量暴涨的思维模式，使用思维导图来管理自然比在纸上列表要清晰很多。不知不觉中，我们的导图已经丰满出了各种的枝条——想想要是我们的草稿已经列了3张纸，那整理思维的时候应该是多么的悲剧！ 所以我推荐给每一个要进行创作的童鞋尝试一下思维导图这种帮助自己管理杂乱思绪的有趣方式。虽然最开始的导图都是用手绘的，但是为了方便起见我还是推荐使用电脑上的软件来制作管理。我使用的MindManager功能还不错，除了本身的默认编辑格式外，这个软件还能够将自己的导图保存成pdf,png,bmp,jpg等各种格式，方便随处研究与转移。在上面给出的维基词条里也附了一串软件，其中也不乏优秀的开源软件。这里是Tony Buzan——导图的发明人所写的六本关于使用导图的书，大家也可以去进阶地学习一下。希望我的推荐对各位读者的学习工作有所帮助。 P.S:我好像很久没有写blog了~主要是最近忙乱不堪，而且疲于作业，没有碰见什么让我眼前一亮的东西……前两天叶子还警告我我的文章已经退出首页了，大惊——我千万不要变成Malloc。正好今日有感于导图，遂夜中写下此文。 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 推荐时间：与机器人对话 推荐时间：Bugbrain 推荐时间：把多米诺放平来玩
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2008/08/blog-post_27-2.html' rel='bookmark' title='推荐时间：把多米诺放平来玩'>推荐时间：把多米诺放平来玩</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>（准确地说应该是）昨天，xxy发给我一个软件Mindjet MindManager Pro 6——是一个帮助制作<a href="http://zh.wikipedia.org/zh-cn/%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE">思维导图</a>的软件。思维导图我以前就听说过了，但是一直都没有认真地去研究和使用这个东西。不过昨天我确实是意识到了这个玩意的强大之处。</p>
<p><span id="more-2327"></span></p>
<p>华东数模邀请赛17号开始，于是我和zxy以及wzq开始了青涩的数模之路的第一天——杯具的是题目前一天晚上就发布了……不过对于我们这种大一的来说，选题其实是一个很简单的事情。于是我们断断续续地开始了讨论。下午和wzq在宿舍讨论了一个多小时，他就有事闪人了（一个星期的数模比赛时间真是……轻松啊）。我留在宿舍又无所事事，正好xxy把这个东西（- -附带了keygen的）丢给了我。</p>
<p>这个软件还挺和谐的，有着比较详细的上手动画教程，令我等新手马上就可以知道用法与最基本的快捷键。之前我和wzq讨论时将东西都列在草稿纸上，感觉很散乱。所以我尝试了一下用思维导图的方式来表达我们的讨论结果。感想就是：虽然思维导图本身的想法简单，但是却与按行文格式来思考的传统方式有着很大的区别。思维导图最大的优点就是他的散射状。一旦所有的句子与陈述都铺排在一张大大的纸上，我就突然感觉到了各个东西之间的关联。估计还是因为普通列表的结构本质上是一维的，所以各个部分之间如果有着复杂的联系难以关联起来，只能像代码缩进一样标示某一块相关联内容的层级。而思维导图本身是二维的，同时长得有点像多叉树，无论是视觉上还是逻辑上都有很清晰的层次结构。个人认为二维结构带来的最大好处就是对内容的变化可以很好的控制，比如我在使用传统列表的方式进行记录整理，突然间想加入一个关键的二级内容，突然发现该插入的地方已经写下了其他的东西，怎么办？只能加个插入号然后往旁边挤着塞进去，这样一来既不美观又破坏了原有的代码缩进式的层次表示。用思维导图就不会遇到这样的问题，直接画一条线延伸到空地，然后该写啥写啥。下面这图就是一个纯粹展示结构的例子，topic部分没有作修改——有没有很直观很清晰的感觉？<img class="alignleft size-full wp-image-2333" title="思维导图样例" src="http://blog.programet.org/wp-content/uploads/Map2.gif" alt="" width="444" height="240" /></p>
<p>我鼓捣完这些东西就去排球队训练了（果然一个星期很闲……）。晚上三个人终于一起凑在我宿舍，开始头脑风暴——这种信息量暴涨的思维模式，使用思维导图来管理自然比在纸上列表要清晰很多。不知不觉中，我们的导图已经丰满出了各种的枝条——想想要是我们的草稿已经列了3张纸，那整理思维的时候应该是多么的悲剧！</p>
<p>所以我推荐给每一个要进行创作的童鞋尝试一下思维导图这种帮助自己管理杂乱思绪的有趣方式。虽然最开始的导图都是用手绘的，但是为了方便起见我还是推荐使用电脑上的软件来制作管理。我使用的MindManager功能还不错，除了本身的默认编辑格式外，这个软件还能够将自己的导图保存成pdf,png,bmp,jpg等各种格式，方便随处研究与转移。在上面给出的维基词条里也附了一串软件，其中也不乏优秀的开源软件。<a href="ed2k://|file|%E3%80%90%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E4%B8%9B%E4%B9%A6(%E5%85%A8%E5%85%AD%E5%86%8C)(PDF)%E3%80%91.rar|35558169|FF9235CDD566854EA16B2A7A1C5A8A57|/">这里</a>是Tony Buzan——导图的发明人所写的六本关于使用导图的书，大家也可以去进阶地学习一下。希望我的推荐对各位读者的学习工作有所帮助。</p>
<p>P.S:我好像很久没有写blog了~主要是最近忙乱不堪，而且疲于作业，没有碰见什么让我眼前一亮的东西……前两天叶子还警告我我的文章已经退出首页了，大惊——我千万不要变成Malloc。正好今日有感于导图，遂夜中写下此文。</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2008/08/blog-post_27-2.html' rel='bookmark' title='推荐时间：把多米诺放平来玩'>推荐时间：把多米诺放平来玩</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>推荐时间：数列填空游戏Hidato</title>
		<link>http://blog.programet.org/2010/01/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e6%95%b0%e5%88%97%e5%a1%ab%e7%a9%ba%e6%b8%b8%e6%88%8fhidato.html</link>
		<comments>http://blog.programet.org/2010/01/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e6%95%b0%e5%88%97%e5%a1%ab%e7%a9%ba%e6%b8%b8%e6%88%8fhidato.html#comments</comments>
		<pubDate>Mon, 25 Jan 2010 17:12:44 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[应用数学]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[自由]]></category>
		<category><![CDATA[趣题]]></category>

		<guid isPermaLink="false">http://blog.programet.cn/?p=1993</guid>
		<description><![CDATA[即使我不说，估计所有人都知道上图中唯一的空格应该填上38。除此之外，你还能发现什么规律么？ 我能告诉你，至少还有一条规律是这样的：在大小上相邻的数字之间的位置也相差不远，都互相在对方的周围八格内，即，如果从1开始往下遍历数字，会发现从下一个数字总是在上一个数字的左右上下的或者对角方向的相邻位置上。 是的，这次我推荐的游戏就是这样的规则：让图中的数字能够从小到大连成一条不间断的线——不管是横的竖的还是斜的。游戏的名称叫做Hidato Adventure——Hidato是以色列数学家Dr. Gyora Benedek发明的有着如上述填数规则的数字游戏。先不妨玩一玩，看看下面这幅图你要花多久来填满？深黄色的格子是挖空的，不需要填。注意，有公共边或者公共顶点的格子都可以填入下一个数字哦~ 这个游戏保证只有一个解，同时比数独灵活的地方就在于它的格子形状可以千奇百怪，在方格中间挖孔是最常见的方法，还有爱心形状的啊，骷髅形状的啊，只要你想得到就能够画得出——规则越简单，可能性就越多样。不过目前我还没有总结出什么比搜索更好的方法，剪枝也就是简简单单地先将所有的唯一解（包括填了唯一解后新产生的唯一解）填满，然后继续深搜……关于解题的其他新想法欢迎在下面留言讨论~~我的是在幻想游戏上下载下来的单机版本（名叫数列大冒险……），而这里是官网上提供的在线试玩地址（貌似只有一关~囧）。 上题的解法见下图： 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 推荐时间：关于数学家的纵横填词 推荐时间：以色列麻将(Rummikub) 推荐时间：EpisteMath
相关文章：<ol>
<li><a href='http://blog.programet.org/2010/05/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%85%b3%e4%ba%8e%e6%95%b0%e5%ad%a6%e5%ae%b6%e7%9a%84%e7%ba%b5%e6%a8%aa%e5%a1%ab%e8%af%8d.html' rel='bookmark' title='推荐时间：关于数学家的纵横填词'>推荐时间：关于数学家的纵横填词</a></li>
<li><a href='http://blog.programet.org/2010/08/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e4%bb%a5%e8%89%b2%e5%88%97%e9%ba%bb%e5%b0%86rummikub.html' rel='bookmark' title='推荐时间：以色列麻将(Rummikub)'>推荐时间：以色列麻将(Rummikub)</a></li>
<li><a href='http://blog.programet.org/2009/02/epistemath.html' rel='bookmark' title='推荐时间：EpisteMath'>推荐时间：EpisteMath</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1995" title="数列大冒险" src="http://blog.programet.cn/wp-content/uploads/QQ截图未命名1.gif" alt="" /></p>
<p><span id="more-1993"></span></p>
<p>即使我不说，估计所有人都知道上图中唯一的空格应该填上38。除此之外，你还能发现什么规律么？</p>
<p>我能告诉你，至少还有一条规律是这样的：在大小上相邻的数字之间的位置也相差不远，都互相在对方的周围八格内，即，如果从1开始往下遍历数字，会发现从下一个数字总是在上一个数字的左右上下的或者对角方向的相邻位置上。</p>
<p>是的，这次我推荐的游戏就是这样的规则：让图中的数字能够从小到大连成一条不间断的线——不管是横的竖的还是斜的。游戏的名称叫做<a href="http://en.wikipedia.org/wiki/Hidato">Hidato</a> Adventure——Hidato是以色列数学家Dr. Gyora Benedek发明的有着如上述填数规则的数字游戏。先不妨玩一玩，看看下面这幅图你要花多久来填满？深黄色的格子是挖空的，不需要填。注意，有公共边或者公共顶点的格子都可以填入下一个数字哦~</p>
<p><img class="alignnone size-full wp-image-1996" title="数列大冒险：题目" src="http://blog.programet.cn/wp-content/uploads/QQ截图未命名2.gif" alt="" /></p>
<p>这个游戏保证只有一个解，同时比数独灵活的地方就在于它的格子形状可以千奇百怪，在方格中间挖孔是最常见的方法，还有爱心形状的啊，骷髅形状的啊，只要你想得到就能够画得出——规则越简单，可能性就越多样。不过目前我还没有总结出什么比搜索更好的方法，剪枝也就是简简单单地先将所有的唯一解（包括填了唯一解后新产生的唯一解）填满，然后继续深搜……关于解题的其他新想法欢迎在下面留言讨论~~我的是在幻想游戏上下载下来的单机版本（名叫数列大冒险……），而这里是<a href="http://www.hidato.com">官网</a>上提供的<a href="http://www.shockwave.com/gamelanding/hidato.jsp">在线试玩地址</a>（貌似只有一关~囧）。</p>
<p>上题的解法见下图：</p>
<p><img class="alignnone size-full wp-image-1997" title="数列大冒险：答案" src="http://blog.programet.cn/wp-content/uploads/QQ截图未命名3.gif" alt="" /></p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2010/05/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%85%b3%e4%ba%8e%e6%95%b0%e5%ad%a6%e5%ae%b6%e7%9a%84%e7%ba%b5%e6%a8%aa%e5%a1%ab%e8%af%8d.html' rel='bookmark' title='推荐时间：关于数学家的纵横填词'>推荐时间：关于数学家的纵横填词</a></li>
<li><a href='http://blog.programet.org/2010/08/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e4%bb%a5%e8%89%b2%e5%88%97%e9%ba%bb%e5%b0%86rummikub.html' rel='bookmark' title='推荐时间：以色列麻将(Rummikub)'>推荐时间：以色列麻将(Rummikub)</a></li>
<li><a href='http://blog.programet.org/2009/02/epistemath.html' rel='bookmark' title='推荐时间：EpisteMath'>推荐时间：EpisteMath</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/01/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e6%95%b0%e5%88%97%e5%a1%ab%e7%a9%ba%e6%b8%b8%e6%88%8fhidato.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>晒：C语言期中实验报告</title>
		<link>http://blog.programet.org/2009/12/%e6%99%92%ef%bc%9ac%e8%af%ad%e8%a8%80%e6%9c%9f%e4%b8%ad%e5%ae%9e%e9%aa%8c%e6%8a%a5%e5%91%8a.html</link>
		<comments>http://blog.programet.org/2009/12/%e6%99%92%ef%bc%9ac%e8%af%ad%e8%a8%80%e6%9c%9f%e4%b8%ad%e5%ae%9e%e9%aa%8c%e6%8a%a5%e5%91%8a.html#comments</comments>
		<pubDate>Fri, 11 Dec 2009 09:03:20 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[计算机]]></category>
		<category><![CDATA[严肃]]></category>
		<category><![CDATA[思维]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[自由]]></category>
		<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://blog.programet.cn/?p=1742</guid>
		<description><![CDATA[其实这是一份比较无聊的东西……因为民意表决掉了期中考试，于是C语言老师znm便换了法子，要我们写一个实验报告出来，其中重点是结构化程序设计。本来嘛，搜索类题目是可以很好地表现出结构化程序设计的优点的（比如递归……），但是我决定写另外一个题目，而把搜索类题目推荐给其他同学~（比如八皇后啊，骑士游历啊这种网上能找到一沓代码的题目）。我选择了素性测试这个问题。当然不需要太难，为了体现结构化，我觉得将不同的方法分别写一个函数然后比较一下就可以了。在下面贴出来的文字中不免有很多装13的地方，同时估计会有说得不严谨的地方…砖不要拍得太狠了…以及有些东西我很懒，就没有真正地完成所有的函数，同时找了一个理由。另：请尽量不要转载，免得老师以为我抄袭——即便我在报告末尾声明过了…… 关于检验素数的算法的探究 素数是数论中最重要的概念，同时在实际中也有着广泛的应用。比如RSA公钥加密系统就利用了大数不好分解成素因数的乘积这一特点——其中就包括了如何判定一个数字是素数这一问题。那么我们就来探究一下如何判定素数。 首先应该想到一个最最简单的方法：即对于整数n，如果我们发现(n%i!=0)对于i属于[2,n-1]时恒成立，那么就可以说n是一个素数了，即用小于n大于1的整数来除n看看能否整除。这个方法实现起来也很简单，效率是O(n)。对应代码中的函数 int method1(int n){}。 但是难道不能优化么？很容易发现，n-1永远都不会整除n——其实，大于[n/2]（此处[x]为高斯取整函数）小于n的整数都不能整除n。那么显然，我们只需要查看2到[n/2]的整数来除n得到的结果就行了。从时间上来说比第一种方法快了一倍，仍然是O(n)。对应代码中的函数int method2(int n){}。 又仔细想了一下，会发现其实第二种方法还是有一点点缺陷。比如我判断25是不是素数的时候，发现2无法除尽25，那么此时所有的偶数都无法除尽25，发现3也无法除尽25，那么所有的3的倍数都无法除尽25。所以，这时发现只要有一个数无法除尽n，则这个数的倍数都无法除尽n。反过来，如果一个数能除尽n，那么它的各个因数也能够除尽。此时不难得到，如果所有小于[n/2]的素数都不能整除n，那么n肯定是一个素数。对这个思路进一步提炼，就可以知道因为素数是递增的，所以用反证法易得当i&#62;sqrt(n)仍然不能整除n时，那么n就是一个素数——此时极大地减少了需要判断的次数。由素数定理可知，小于整数x的素数个数约为x/lnx，则需要列举的素数约等于2*sqrt(n)/ln(n)，算法效率为O(sqrt(n)/ln(n))，效率在此时被极大提高了。不过这时就牵涉到了一个问题：如何找到所有小于n的素数？待会再来讨论这个问题。 检验素数的方法除了确定性的，还有不确定性的——由费马小定理开创的素性检验的概率算法。费马小定理是说假如a是一个整数，p是一个素数，那么。那么，反过来，如果a是一个整数同时有上式成立，那么p是不是素数呢？很遗憾，答案是否定的。但是我们可以通过更换a的值来进行多次检验，减小判断错误的概率。理论上只需要将a取遍所有小于p的素数即可给出答案，但是这样会让效率变得很低。这个方法的缺点有两个：一是计算a^p会比较缓慢，二是即使优化了乘方的写法也会很有可能需要为了非高精度的a和p专门进行高精度处理，减慢了速度。对应代码中的int Fermat(int n,int t){}，其中调用了另外一个求幂次的函数 int power(int a,int p){}。 另外一个著名的素性检验的概率算法就是Miller-Rabin算法。要测试N是否为质数，首先将N − 1分解为d*2^s。在每次测试开始时，先随机选一个介于 [1,N − 1]的整数 a，之后如果对所有的，若且，则N是合数。否则，N有3/4的机率为质数。Miller-Rabin检验的好处在于你可以估计出错的概率是多少，我重复m次那么最后出错的概率就是1/(4^m)。如果将费马小定理和MR检验结合起来，那么准确率将会大大提高。 由于之前说到了使用“小于n的所有素数”之类的方法，那么我们就应该来考虑一下如何求出一张素数表。最容易想到的方法就是先检验出2到n-1的素数。但是这样的话效率就变成了O(n^2)。换一种思路：所有素数的倍数都不是素数，那么好办啦，我们每发现一个素数p，就将2到n-1中的p的倍数给找出来，标记为合数，而这个过程中始终没有被标记过的数自然就是素数了。这个方法其实称为埃拉托斯特尼筛法，是古希腊数学家埃拉托斯特尼所提出的。其实可以知道，我们只需要筛到[n/2]即可。更进一步的，如果使用一个数组prime[i]存储得到的第i个素数，那么和前面类似的理由，我们筛到sqrt(n)就可以了。对应代码中的int Eratosthenes1(int n){}。 接下来大概可以给出两种改进算法。第一种是这样的：考虑到2和3的倍数都不是合数，那么显然，素数只可能是6n±1的形式。我们循环的时候可以直接考虑所有的6n±1形式的数字。其实这样以来还可以再考虑5，7，11，……但这样就没有一个终止的时候了。6n±1比较简洁同时没有增加太多中间运算步骤，可以接受。对应代码中的int Eratosthenes2(int n){}。 另一种优化方法则巧妙很多。考虑到最原始的筛法中6会被2和3筛两次，60就会被2，3，5筛3次。那么我们就想办法让每一个合数都被筛一次。结合代码加以说明。 void makeprime&#40;&#41; &#123; for &#40;i=0;i&#60;=n;i++&#41; isprime&#91;i&#93;=1; len=0; isprime&#91;1&#93;=0; for &#40;i=2;i&#60;=n;i++&#41; &#123; if &#40;isprime&#91;i&#93;&#41; prime&#91;len++&#93;=i; for &#40;j=0;j&#60;=n;j++&#41;//标记一 &#123; isprime&#91;prime&#91;j&#93;*i&#93;=0; if &#40;i%prime&#91;j&#93;==0&#41;//标记二 break; &#125; [...]
相关文章：<ol>
<li><a href='http://blog.programet.org/2011/02/%e8%b0%9c%e4%b9%8b%e7%b3%bb%e5%88%970%e7%ba%bf%e6%80%a7%e8%a7%84%e5%88%92.html' rel='bookmark' title='谜之系列(0):线性规划'>谜之系列(0):线性规划</a></li>
<li><a href='http://blog.programet.org/2010/07/%e7%bb%9f%e8%ae%a1%e4%b8%8e%e6%8e%a8%e7%90%862%ef%bc%9a%e7%bd%ae%e4%bf%a1%e5%8c%ba%e9%97%b4.html' rel='bookmark' title='统计与推理(2)：置信区间'>统计与推理(2)：置信区间</a></li>
<li><a href='http://blog.programet.org/2009/10/%e6%97%a0%e7%a9%b7%e4%b8%ad%e7%9a%84%e4%ba%8c%e5%88%86%ef%bc%88%e4%b8%80%ef%bc%89.html' rel='bookmark' title='无穷中的二分（一）'>无穷中的二分（一）</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>其实这是一份比较无聊的东西……因为民意表决掉了期中考试，于是C语言老师znm便换了法子，要我们写一个实验报告出来，其中重点是结构化程序设计。本来嘛，搜索类题目是可以很好地表现出结构化程序设计的优点的（比如递归……），但是我决定写另外一个题目，而把搜索类题目推荐给其他同学~（比如八皇后啊，骑士游历啊这种网上能找到一沓代码的题目）。我选择了素性测试这个问题。当然不需要太难，为了体现结构化，我觉得将不同的方法分别写一个函数然后比较一下就可以了。在下面贴出来的文字中不免有很多装13的地方，同时估计会有说得不严谨的地方…砖不要拍得太狠了…以及有些东西我很懒，就没有真正地完成所有的函数，同时找了一个理由。<span style="color: #ff0000;">另：请尽量不要转载，免得老师以为我抄袭——即便我在报告末尾声明过了……</span><span id="more-1742"></span></p>
<blockquote><p><strong>关于检验素数的算法的探究</strong></p>
<p>素数是数论中最重要的概念，同时在实际中也有着广泛的应用。比如RSA公钥加密系统就利用了大数不好分解成素因数的乘积这一特点——其中就包括了如何判定一个数字是素数这一问题。那么我们就来探究一下如何判定素数。</p>
<p>首先应该想到一个最最简单的方法：即对于整数n，如果我们发现(n%i!=0)对于i属于[2,n-1]时恒成立，那么就可以说n是一个素数了，即用小于n大于1的整数来除n看看能否整除。这个方法实现起来也很简单，效率是O(n)。对应代码中的函数 int method1(int n){}。</p>
<p>但是难道不能优化么？很容易发现，n-1永远都不会整除n——其实，大于[n/2]（此处[x]为高斯取整函数）小于n的整数都不能整除n。那么显然，我们只需要查看2到[n/2]的整数来除n得到的结果就行了。从时间上来说比第一种方法快了一倍，仍然是O(n)。对应代码中的函数int method2(int n){}。</p>
<p>又仔细想了一下，会发现其实第二种方法还是有一点点缺陷。比如我判断25是不是素数的时候，发现2无法除尽25，那么此时所有的偶数都无法除尽25，发现3也无法除尽25，那么所有的3的倍数都无法除尽25。所以，这时发现只要有一个数无法除尽n，则这个数的倍数都无法除尽n。反过来，如果一个数能除尽n，那么它的各个因数也能够除尽。此时不难得到，如果所有小于[n/2]的素数都不能整除n，那么n肯定是一个素数。对这个思路进一步提炼，就可以知道因为素数是递增的，所以用反证法易得当i&gt;sqrt(n)仍然不能整除n时，那么n就是一个素数——此时极大地减少了需要判断的次数。由素数定理可知，小于整数x的素数个数约为x/lnx，则需要列举的素数约等于2*sqrt(n)/ln(n)，算法效率为O(sqrt(n)/ln(n))，效率在此时被极大提高了。不过这时就牵涉到了一个问题：如何找到所有小于n的素数？待会再来讨论这个问题。</p>
<p>检验素数的方法除了确定性的，还有不确定性的——由费马小定理开创的素性检验的概率算法。费马小定理是说假如a是一个整数，p是一个素数，那么<img src='http://s.wordpress.com/latex.php?latex=a%5Ep%20%5Cequiv%20a%20%28mod%20p%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a^p \equiv a (mod p)' title='a^p \equiv a (mod p)' class='latex' />。那么，反过来，如果a是一个整数同时有上式成立，那么p是不是素数呢？很遗憾，答案是否定的。但是我们可以通过更换a的值来进行多次检验，减小判断错误的概率。理论上只需要将a取遍所有小于p的素数即可给出答案，但是这样会让效率变得很低。这个方法的缺点有两个：一是计算a^p会比较缓慢，二是即使优化了乘方的写法也会很有可能需要为了非高精度的a和p专门进行高精度处理，减慢了速度。对应代码中的int Fermat(int n,int t){}，其中调用了另外一个求幂次的函数 int power(int a,int p){}。</p>
<p>另外一个著名的素性检验的概率算法就是Miller-Rabin算法。要测试N是否为质数，首先将N − 1分解为d*2^s。在每次测试开始时，先随机选一个介于 [1,N − 1]的整数 a，之后如果对所有的<img src='http://s.wordpress.com/latex.php?latex=r%5Cin%20%5B0%2Cs-1%5D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='r\in [0,s-1]' title='r\in [0,s-1]' class='latex' />，若<img src='http://s.wordpress.com/latex.php?latex=a%5Ed%20mod%20N%20%5Cneq%201&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a^d mod N \neq 1' title='a^d mod N \neq 1' class='latex' />且<img src='http://s.wordpress.com/latex.php?latex=a%5E%7B2%5Erd%7D%20mod%20N%20%5Cneq%20-1&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='a^{2^rd} mod N \neq -1' title='a^{2^rd} mod N \neq -1' class='latex' />，则N是合数。否则，N有3/4的机率为质数。Miller-Rabin检验的好处在于你可以估计出错的概率是多少，我重复m次那么最后出错的概率就是1/(4^m)。如果将费马小定理和MR检验结合起来，那么准确率将会大大提高。</p>
<p>由于之前说到了使用“小于n的所有素数”之类的方法，那么我们就应该来考虑一下如何求出一张素数表。最容易想到的方法就是先检验出2到n-1的素数。但是这样的话效率就变成了O(n^2)。换一种思路：所有素数的倍数都不是素数，那么好办啦，我们每发现一个素数p，就将2到n-1中的p的倍数给找出来，标记为合数，而这个过程中始终没有被标记过的数自然就是素数了。这个方法其实称为<strong>埃拉托斯特尼筛法</strong>，是古希腊数学家埃拉托斯特尼所提出的。其实可以知道，我们只需要筛到[n/2]即可。更进一步的，如果使用一个数组prime[i]存储得到的第i个素数，那么和前面类似的理由，我们筛到sqrt(n)就可以了。对应代码中的int Eratosthenes1(int n){}。</p>
<p>接下来大概可以给出两种改进算法。第一种是这样的：考虑到2和3的倍数都不是合数，那么显然，素数只可能是6n±1的形式。我们循环的时候可以直接考虑所有的6n±1形式的数字。其实这样以来还可以再考虑5，7，11，……但这样就没有一个终止的时候了。6n±1比较简洁同时没有增加太多中间运算步骤，可以接受。对应代码中的int Eratosthenes2(int n){}。</p>
<p>另一种优化方法则巧妙很多。考虑到最原始的筛法中6会被2和3筛两次，60就会被2，3，5筛3次。那么我们就想办法让每一个合数都被筛一次。结合代码加以说明。</p>

<div class="wp_codebox"><table><tr id="p17423"><td class="code" id="p1742code3"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> makeprime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;=</span>n<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
        isprime<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
    len<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    isprime<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #0000dd;">2</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;=</span>n<span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>isprime<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>
            prime<span style="color: #009900;">&#91;</span>len<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span>i<span style="color: #339933;">;</span>
        <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span>j<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>j<span style="color: #339933;">&lt;=</span>n<span style="color: #339933;">;</span>j<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #666666; font-style: italic;">//标记一</span>
        <span style="color: #009900;">&#123;</span>
            isprime<span style="color: #009900;">&#91;</span>prime<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #339933;">*</span>i<span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>prime<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #666666; font-style: italic;">//标记二</span>
                <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>以上便是生成素数的函数的主体代码。</p>
<p>利用了每个合数必有一个最小素因子。每个合数仅被它的最小素因子筛去正好一次。所以为线性时间。代码中体现在：</p>

<div class="wp_codebox"><table><tr id="p17424"><td class="code" id="p1742code4"><pre class="c" style="font-family:monospace;"><span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>i<span style="color: #339933;">%</span>prime<span style="color: #009900;">&#91;</span>j<span style="color: #009900;">&#93;</span><span style="color: #339933;">==</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>prime[]数组中的素数是递增的,当i能整除prime[j]，那么i*prime[j+1]这个合数肯定被prime[j]乘以某个数筛掉。因为i中含有prime[j],prime[j]比prime[j+1]小，即i=k*prime[j]，那么i*prime[j+1]=(k*prime[j])*prime[j+1]=k’*prime[j]，接下去的素数同理。所以不用筛下去了。因此，在满足i%prime[j]==0这个条件之前以及第一次满足改条件时,prime[j]必定是prime[j]*i的最小因子。这个方法改良后的时间效率是O(n)！int Eratosthenes3(int n){}，其中因为是一旦判定了n是合数那么就退出，如果设n的最小质因数是p，那么时间效率应该是O(p+n/p)。</p>
<p>但是到这里还没完，我在维基百科上找到了一个更厉害的算法，它的时间效率是<img src='http://s.wordpress.com/latex.php?latex=O%28%5Cfrac%7Bn%7D%7Bloglogn%7D%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='O(\frac{n}{loglogn})' title='O(\frac{n}{loglogn})' class='latex' />。这个算法的名字叫做Sieve of Atkin，大概能够翻译为“阿特金筛法”，是埃氏筛法的极大改良版。我还没能证明这个算法，只能将步骤写下了：</p>
<p>首先定义r(n)=n%60，再定义反转筛中某数的状态就是让它从是素数到不是素数或相反。</p>
<p>预处理：素数表中有2，3，5三个元素，其余的元素一直在筛子中。</p>
<ul>
<li>如果r(n) 是 1, 13, 17, 29, 37, 41, 49 或53之一，反转方程4x<sup>2</sup> + y<sup>2</sup> = n所有的正整数解的状态；</li>
<li>如果r(n) 是 7, 19, 31 或 43 之一，反转方程3x<sup>2</sup> + y<sup>2</sup> = n. 所有的正整数解的状态；</li>
<li>如果 r(n) 是 11, 23, 47 或 59 之一，反转方程{3x<sup>2</sup> − y<sup>2</sup> = n;x &gt; y.} 所有的正整数解的状态；</li>
<li>对于其他的r(n)可以不予理睬。</li>
</ul>
<p>将筛子中的最小的标记为“是素数”的数字添加到素数表中，同时将其平方以及平方的倍数都标记为非素数。</p>
<p>经过以上的步骤，就可以得到n以内的素数表。但是由于<img src='http://s.wordpress.com/latex.php?latex=O%28%5Cfrac%7Bn%7D%7Bloglogn%7D%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='O(\frac{n}{loglogn})' title='O(\frac{n}{loglogn})' class='latex' />与O(n)实际上相差无几，所以这个方法的理论意义大于实际意义。维基这个词条的英文链接：<a href="http://en.wikipedia.org/wiki/Sieve_of_atkin">http://en.wikipedia.org/wiki/Sieve_of_atkin</a> 。我上面的文字来自那些文字的我的翻译。</p>
<p>在实际的测试中，由于数据范围较小，所以说每一种算法的时间都是一瞬间。不过在实际的应用中，还需要结合高精度运算，滚动数组等方法扩展数据的计算与存储范围。如果前文所讨论的问题要想运用到实际的RSA等应用方面，算法的效率以及复杂而高性能的编码就更为重要了。</p>
<p>通过上文的分析可以发现，想要优化一个算法，那么最重要的就是减少冗余运算（比如第一到第三种方法的优化），或者是做足够多的预处理(生成素数表)，甚至是放弃准确度以求得一个概率上的解。这两种思想可以非常广泛地应用到搜索剪枝、动态规划、记忆化搜索等更高级的方法中去。因此，这个关于检验素数的算法的讨论更重要的是优化算法的思想以及对时间复杂度、实际代码复杂度的权衡。</p>
<p>以上是算法分析，下面是对代码的简要说明：</p>
<ol>
<li>所有的求解函数中都以返回1表示所求的n是素数，返回0则表示不是素数。</li>
<li>每一个函数都记录了这个函数运行始末使用的时间。</li>
<li>代码中为了让各个函数之间的停顿不至于太短，因此使用了#include&lt;windows.h&gt;，调用了其中的Sleep函数，让程序暂停运行。</li>
<li>费马小定理无法在简单的编码下发挥实际的检验作用，因此只是作为一个概率算法的展示，Miller-Rabin因为同样的原因，便不再进行编码。</li>
<li>SieveOfAtkin在编码上较为困难，且我暂时不明白其机理，因此不准备进行编码，以免程序运行结果不良好的时候难以查找错误。</li>
<li>代码基本上由我独立完成，能够成功编译并成功运行。</li>
<li>由于数据范围所限，各个算法之间的比较还不能凸现出来。因此其实还可以对代码进行如下变换进行比较：即使用判定某一个数是否为素数的程序来生成素数表，即可大致看出其与专门生成素数表的程序的效率高低。或者还有另外一个更简单的思路：将每一个程序运行10000遍，也可以得到比较明显的时间差别。</li>
</ol>
<p>本文可能会在实验报告提交之后放到我的博客上去：<a href="../../../../../">http://blog.programet.cn/</a>，所以如果在网上的其他地方出现，日期不可能早于12月11日——而且应该都是转载。</p></blockquote>
<p>这里说一下，O(n)的筛法来自于以前我在<a href="http://www.cnblogs.com/suno/articles/1064368.html">这里</a>看到的代码。</p>
<p>与此报告配套的代码请<a href="http://blog.programet.cn/wp-content/uploads/期中实验报告.cpp">点击下载</a>，因为老师要求使用VS编译，所以请大家自行更改一些细节后再使用gcc编译。</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2011/02/%e8%b0%9c%e4%b9%8b%e7%b3%bb%e5%88%970%e7%ba%bf%e6%80%a7%e8%a7%84%e5%88%92.html' rel='bookmark' title='谜之系列(0):线性规划'>谜之系列(0):线性规划</a></li>
<li><a href='http://blog.programet.org/2010/07/%e7%bb%9f%e8%ae%a1%e4%b8%8e%e6%8e%a8%e7%90%862%ef%bc%9a%e7%bd%ae%e4%bf%a1%e5%8c%ba%e9%97%b4.html' rel='bookmark' title='统计与推理(2)：置信区间'>统计与推理(2)：置信区间</a></li>
<li><a href='http://blog.programet.org/2009/10/%e6%97%a0%e7%a9%b7%e4%b8%ad%e7%9a%84%e4%ba%8c%e5%88%86%ef%bc%88%e4%b8%80%ef%bc%89.html' rel='bookmark' title='无穷中的二分（一）'>无穷中的二分（一）</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2009/12/%e6%99%92%ef%bc%9ac%e8%af%ad%e8%a8%80%e6%9c%9f%e4%b8%ad%e5%ae%9e%e9%aa%8c%e6%8a%a5%e5%91%8a.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>说什么就是什么：Your World Of Text</title>
		<link>http://blog.programet.org/2009/08/%e8%af%b4%e4%bb%80%e4%b9%88%e5%b0%b1%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9ayour-world-of-text.html</link>
		<comments>http://blog.programet.org/2009/08/%e8%af%b4%e4%bb%80%e4%b9%88%e5%b0%b1%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9ayour-world-of-text.html#comments</comments>
		<pubDate>Tue, 11 Aug 2009 04:09:29 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[网络]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[自由]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://blog.programet.cn/?p=1087</guid>
		<description><![CDATA[昨天在Twitter(想知道如何上Twitter的童鞋们可以参考博客右侧栏顶部的推荐文章)上面看到某推友说了一个网址:http://www.yourworldoftext.com/。处于百无聊赖状态的我就奔过去看了看，发现这是一个非一般意义上的Web2.0网站。 当你进入这个页面，会发现整个页面就是白底黑字，以及左上角的&#8221;Pause&#8221;与右上角的&#8221;About&#8221;。我们可以先去看看About。 作者写道，Your World of Text是一个由无限大的文本页面组成的网站，这些文本能被任意的访问者所修改，你可以删除（使用空格键）或者覆盖已存在的文字或者在空白的地方添加文字。而其他访问者所进行的操作能马上被你看见——所以我们能够常常看见字母不停地消失与出现。我们每次进入那个网站，都盯着同样一个地方，这时候你可以用鼠标拖拽从而让自己看到别的文字。 真正牛逼的在于下面的这个功能：你可以在网站名后面添加一串字母，比如http://yourworldoftext.com/forexample，这样，我们就开启了一个与主页有着一模一样的功能的无限文字页面！而且你可以把后面那串文字弄得很诡异，这样你就可以当作私人用途了！我去看了看博客的页面，果然是空旷的——我马上留了名。最让我惊异的就是这个页面我是第二个人（是我写的”顶楼上”），同时这个页面我是第一人…… 这个网站与其他的Web2.0网站不同之处就在于这是一个完全开放的网站，没有权限，没有数据库，有的就是全世界一起来改造的无数个页面。你完全可以用来当作一个简便的bbs或者网络会议交流场所，或者是情人之间的私语处，甚至是以自己的密码构造的地址来开辟一个写个人日记的场所。 作者在About页面下的8月9日更新说了两条我感兴趣的。第一个就是他正在记录所有留在网上的信息，以后可能会回放出来；第二个就是想要申请一个私用的域名的团体可以Email他。 这里就是一块电子画板，任何人都可以去发表自己的创作。没有繁琐的申请与密码验证，也没有复杂的用户交流——只要大家真的够猛，可以进行任何活动！ 本博客的地址是毫无疑问的  http://yourworldoftext.com/programet/ 欢迎大家在上面进行交流！ 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： “你们的hello world 都弱暴了 ” Half a World Away (3) Half a World Away
相关文章：<ol>
<li><a href='http://blog.programet.org/2011/08/%e2%80%9c%e4%bd%a0%e4%bb%ac%e7%9a%84hello-world-%e9%83%bd%e5%bc%b1%e6%9a%b4%e4%ba%86-%e2%80%9d.html' rel='bookmark' title='“你们的hello world 都弱暴了 ”'>“你们的hello world 都弱暴了 ”</a></li>
<li><a href='http://blog.programet.org/2009/09/half-a-world-away-3.html' rel='bookmark' title='Half a World Away (3)'>Half a World Away (3)</a></li>
<li><a href='http://blog.programet.org/2009/07/half-a-world-away.html' rel='bookmark' title='Half a World Away'>Half a World Away</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>昨天在Twitter(想知道如何上Twitter的童鞋们可以参考博客右侧栏顶部的推荐文章)上面看到某推友说了一个网址:<a href="http://www.yourworldoftext.com/">http://www.yourworldoftext.com/</a>。处于百无聊赖状态的我就奔过去看了看，发现这是一个非一般意义上的Web2.0网站。</p>
<p><span id="more-1087"></span></p>
<p>当你进入这个页面，会发现整个页面就是白底黑字，以及左上角的&#8221;Pause&#8221;与右上角的&#8221;About&#8221;。我们可以先去看看<a href="http://ianab.com/yourworld/">About</a>。</p>
<p>作者写道，<a href="http://yourworldoftext.com/">Your World of Text</a>是一个由无限大的文本页面组成的网站，这些文本能被任意的访问者所修改，你可以删除（使用空格键）或者覆盖已存在的文字或者在空白的地方添加文字。而其他访问者所进行的操作能马上被你看见——所以我们能够常常看见字母不停地消失与出现。我们每次进入那个网站，都盯着同样一个地方，这时候你可以用鼠标拖拽从而让自己看到别的文字。</p>
<p>真正牛逼的在于下面的这个功能：你可以在网站名后面添加一串字母，比如<a href="http://yourworldoftext.com/forexample">http://yourworldoftext.com/forexample</a>，这样，我们就开启了一个与主页有着一模一样的功能的无限文字页面！而且你可以把后面那串文字弄得很诡异，这样你就可以当作私人用途了！我去看了看<a href="http://yourworldoftext.com/programet">博客的页面</a>，果然是空旷的——我马上留了名。最让我惊异的就是<a href="http://www.yourworldoftext.com/china">这个页面</a>我是第二个人（是我写的”顶楼上”），同时<a href="http://www.yourworldoftext.com/chinese">这个页面</a>我是第一人……</p>
<p>这个网站与其他的Web2.0网站不同之处就在于这是一个完全开放的网站，没有权限，没有数据库，有的就是全世界一起来改造的无数个页面。你完全可以用来当作一个简便的bbs或者网络会议交流场所，或者是情人之间的私语处，甚至是以自己的密码构造的地址来开辟一个写个人日记的场所。</p>
<p>作者在About页面下的8月9日更新说了两条我感兴趣的。第一个就是他正在记录所有留在网上的信息，以后可能会回放出来；第二个就是想要申请一个私用的域名的团体可以Email他。</p>
<p>这里就是一块电子画板，任何人都可以去发表自己的创作。没有繁琐的申请与密码验证，也没有复杂的用户交流——只要大家真的够猛，可以进行任何活动！</p>
<p>本博客的地址是毫无疑问的 <a href="http://yourworldoftext.com/programet"> http://yourworldoftext.com/programet/</a></p>
<p>欢迎大家在上面进行交流！</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2011/08/%e2%80%9c%e4%bd%a0%e4%bb%ac%e7%9a%84hello-world-%e9%83%bd%e5%bc%b1%e6%9a%b4%e4%ba%86-%e2%80%9d.html' rel='bookmark' title='“你们的hello world 都弱暴了 ”'>“你们的hello world 都弱暴了 ”</a></li>
<li><a href='http://blog.programet.org/2009/09/half-a-world-away-3.html' rel='bookmark' title='Half a World Away (3)'>Half a World Away (3)</a></li>
<li><a href='http://blog.programet.org/2009/07/half-a-world-away.html' rel='bookmark' title='Half a World Away'>Half a World Away</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2009/08/%e8%af%b4%e4%bb%80%e4%b9%88%e5%b0%b1%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9ayour-world-of-text.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>银翼杀手与干细胞精子</title>
		<link>http://blog.programet.org/2009/07/%e9%93%b6%e7%bf%bc%e6%9d%80%e6%89%8b%e4%b8%8e%e5%b9%b2%e7%bb%86%e8%83%9e%e7%b2%be%e5%ad%90.html</link>
		<comments>http://blog.programet.org/2009/07/%e9%93%b6%e7%bf%bc%e6%9d%80%e6%89%8b%e4%b8%8e%e5%b9%b2%e7%bb%86%e8%83%9e%e7%b2%be%e5%ad%90.html#comments</comments>
		<pubDate>Wed, 08 Jul 2009 15:04:28 +0000</pubDate>
		<dc:creator>寺雷颠</dc:creator>
				<category><![CDATA[科普]]></category>
		<category><![CDATA[克隆人]]></category>
		<category><![CDATA[干细胞]]></category>
		<category><![CDATA[自由]]></category>
		<category><![CDATA[银翼杀手]]></category>
		<category><![CDATA[非严肃]]></category>

		<guid isPermaLink="false">http://blog.programet.cn/?p=636</guid>
		<description><![CDATA[下面我们先来阅读一条最新的新闻： 英国科学家宣布用人体干细胞制造出精子 国际在线消息 (记者李宁静)：英国纽卡斯尔大学的科学家们8日称，他们利用人体干细胞在实验室造出了“世界首创的人造精子”。 纽卡斯尔大学研究小组在《干细胞研究及进展》杂志上刊登文章介绍说，这些利用人体干细胞制造的“人造精子”是完全成熟的、可活动的精子，这项最 新科学成就可能最早在5年内就会被用于体外受精。研究人员相信，该研究结果将为治疗男性不育症带来希望。届时，成千上万的不育男性将会拥有自己的“基因” 儿女。 该研究小组还公布了一段录像来支持他们的结论。 不过，纽卡斯尔大学科研人员的这项最新研究并未赢得满堂彩。一些科学家认为，该大学造出的“人造精子”并未完全发育好。他们指出，那些培育出来 的细胞或许有一些遗传基因特征，但和真正精子相比在功能以及分子结构上具有很大的差别。 此外，这一最新成果也引来了一些道德和伦理争议。（转自新浪网） 关于克隆人的争论还没有结束，但是我们的科技却早就不安心成为政治家们博弈的工具，飞速的往前（或后）迈进了。当干细胞可以用于分化精子时，我们发现我们离克隆人确实越来越近了——用干细胞制造一个精子，这意味着我们可以对这些精子的染色体组所携带的遗传信息进行“审核”，这可比产前诊断“符合”道义多了，毕竟我们通常把生命的起点定为受精作用。那么在受精作用发生之前，我们便可以“淘汰”掉那些不合格的小蝌蚪，而如果这都要受到谴责，那么手淫者一定是这个世界上最不道德的人。相似的，当精子克隆已经成功后，卵子也不会远了。精子卵子都能准确制造后——一个完整的，事先预设好的人类自然也就在角落等着我们了。 突然我想到了自己前几天刚学习过的一部经典黑色科幻电影——银翼杀手。其中讨论了人类和复制人的关系。我们将如何面对那些我们自己“制造”出来的“同类”。不过通常情况下，主流都不会愿意将克隆人或者复制人认同为我们的“同类”——偏见于是就产生了，当偏见产生后，矛盾冲突变成为不可避免的。正如银翼杀手中，人类对自己制造出来的，接近“完美”的复制人感到了恐惧，于是银翼杀手们便诞生了——他们负责猎杀所有的复制人。 但是，如果银翼杀手中的某一位本身就是复制人呢？ 人类可以把狗当作真正的朋友，是因为狗永远不可能做到比人类更优秀。而当一个克隆人比一个“正常人”更优秀的时候，主流们通常都和可能会将他&#8221;克隆&#8221;的属性放大，而忽略了“人”的本质——那是一个和我们一样拥有智慧的生命。而对于像我一样的少部分人（敝人甚至认为有机无机生命非生命人类非人类没有任何不同，仅仅是化学结构上的复杂度的问题），只能以围观群众的身份看着事态的发展。不过如果有一天，真正产生了克隆人（同时我认为，如果真正有了克隆人并且达到一定数量，克隆人与正常人的冲突是不可避免的，因为两者同为“人”），当世界乱起来的时候，像寺雷颠这样的无政（啊啊）府主义者肯定会欣喜的等待新秩序的建立的。 不过我是不可能等到那一天了，读者你倒是很有机会。 本文由 寺雷颠 创作，转载或引用前请联系我们。]]></description>
			<content:encoded><![CDATA[<p>下面我们先来阅读一条最新的新闻：</p>
<h1 id="artibodyTitle">英国科学家宣布用人体干细胞制造出精子</h1>
<p><span id="more-636"></span></p>
<p>国际在线消息 (记者李宁静)：英国纽卡斯尔大学的科学家们8日称，他们利用人体干细胞在实验室造出了“世界首创的人造精子”。</p>
<p>纽卡斯尔大学研究小组在《干细胞研究及进展》杂志上刊登文章介绍说，这些利用人体干细胞制造的“人造精子”是完全成熟的、可活动的精子，这项最 新科学成就可能最早在5年内就会被用于体外受精。研究人员相信，该研究结果将为治疗男性不育症带来希望。届时，成千上万的不育男性将会拥有自己的“基因” 儿女。 该研究小组还公布了一段录像来支持他们的结论。</p>
<p>不过，纽卡斯尔大学科研人员的这项最新研究并未赢得满堂彩。一些科学家认为，该大学造出的“人造精子”并未完全发育好。他们指出，那些培育出来 的细胞或许有一些遗传基因特征，但和真正精子相比在功能以及分子结构上具有很大的差别。 此外，这一最新成果也引来了一些道德和伦理争议。（转自新浪网）</p>
<p>关于克隆人的争论还没有结束，但是我们的科技却早就不安心成为政治家们博弈的工具，飞速的往前（或后）迈进了。当干细胞可以用于分化精子时，我们发现我们离克隆人确实越来越近了——用干细胞制造一个精子，这意味着我们可以对这些精子的染色体组所携带的遗传信息进行“审核”，这可比产前诊断“符合”道义多了，毕竟我们通常把生命的起点定为受精作用。那么在受精作用发生之前，我们便可以“淘汰”掉那些不合格的小蝌蚪，而如果这都要受到谴责，那么手淫者一定是这个世界上最不道德的人。相似的，当精子克隆已经成功后，卵子也不会远了。精子卵子都能准确制造后——一个完整的，事先预设好的人类自然也就在角落等着我们了。</p>
<p>突然我想到了自己前几天刚学习过的一部经典黑色科幻电影——银翼杀手。其中讨论了人类和复制人的关系。我们将如何面对那些我们自己“制造”出来的“同类”。不过通常情况下，主流都不会愿意将克隆人或者复制人认同为我们的“同类”——偏见于是就产生了，当偏见产生后，矛盾冲突变成为不可避免的。正如银翼杀手中，人类对自己制造出来的，接近“完美”的复制人感到了恐惧，于是银翼杀手们便诞生了——他们负责猎杀所有的复制人。</p>
<p>但是，如果银翼杀手中的某一位本身就是复制人呢？</p>
<p>人类可以把狗当作真正的朋友，是因为狗永远不可能做到比人类更优秀。而当一个克隆人比一个“正常人”更优秀的时候，主流们通常都和可能会将他&#8221;克隆&#8221;的属性放大，而忽略了“人”的本质——那是一个和我们一样拥有智慧的生命。而对于像我一样的少部分人（敝人甚至认为有机无机生命非生命人类非人类没有任何不同，仅仅是化学结构上的复杂度的问题），只能以围观群众的身份看着事态的发展。不过如果有一天，真正产生了克隆人（同时我认为，如果真正有了克隆人并且达到一定数量，克隆人与正常人的冲突是不可避免的，因为两者同为“人”），当世界乱起来的时候，像寺雷颠这样的无政（啊啊）府主义者肯定会欣喜的等待新秩序的建立的。</p>
<p>不过我是不可能等到那一天了，读者你倒是很有机会。</p>
<p><small>本文由 寺雷颠 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2009/07/%e9%93%b6%e7%bf%bc%e6%9d%80%e6%89%8b%e4%b8%8e%e5%b9%b2%e7%bb%86%e8%83%9e%e7%b2%be%e5%ad%90.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>我的Linux</title>
		<link>http://blog.programet.org/2009/01/linux.html</link>
		<comments>http://blog.programet.org/2009/01/linux.html#comments</comments>
		<pubDate>Sat, 31 Jan 2009 21:53:00 +0000</pubDate>
		<dc:creator>Malloc</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[商业法则]]></category>
		<category><![CDATA[自由]]></category>
		<category><![CDATA[随感]]></category>

		<guid isPermaLink="false">http://test.programet.cn/2009/01/%e6%88%91%e7%9a%84linux.html</guid>
		<description><![CDATA[现在已经离不开linux了。 刚开始用的时候纯粹就是好奇和标榜自己的与众不同。当别人在讨论windows的问题时，自己来一句“我用linux的”，相当满足。 随着年龄、阅历和知识的渐长，自己也在思考和了解一些东西。最重要的一点就是：不要去在乎你选择了一个名叫XX的操作系统，而是去想想这个操作系统能带给你什么。 无 论是windows、linux、macos、solaris抑或那些不知名的操作系统，他们的底层都是一致的，遵循着大致一样的操作系统理论。只有在高 一点层面上，他们才开始表现出不同。就是在这些层面上，凸现了他们不一样的设计理念，也反射着设计者的价值信条。所以经常有人常常骂微软的独裁；也经常有 人嘲讽linuxers是群满脑子乌托邦的理想主义者。 初识linux的我在安装软件时一遍又一遍的碰壁，翻遍目录找不到想要的软件，G遍天下网 页而找不到正解，有时真想甩头重新奔回windows，但当不熟练地键入&#8221;sudo reboot&#8221;，正要回车时，犹豫了。有个声音告诉我，要留下来。这个声音是如此强烈，让我想起了小时候捣鼓弹弓、泡沫船、纸飞机的情形和刚买回电脑时拆 了主机玩弄主板被电到的感觉。不断涌现着的还有那些在windows上不曾学到过的关于硬件和网络的知识。手轻轻滑落键盘，望着只有光标在闪烁的命令行界 面，猛地醒悟 “你要去创造一个你的世界”。linux就像一个忠实含蓄的高明管家，陪伴着你去创造你的世界。 我以前常常在想那些写出一个又一个开源软件包的到底是些什么人。在这个“万事皆谈利”的年代，他们肯腾出那么多宝贵的时间作一些Free的东西。现在知道这个Free对于他们来说不是免费而是自由。在debian的自我介绍上可以看到这么一些话 “您也许会奇怪: 为什么人们愿意花费他们自己的时间来写软件，谨慎的包装它，然后 再把它全部送给别人？正如同有许多不同的人选择做出这样子的贡献一样，这 个问题也有许多不同的答案。有些人只是喜欢帮助别人。有些人利用写程序来学习更多关于计算机方面的知识。也有些人是在寻找一种避免软件价格膨胀的途径。还有越来越多的 人是为了对他们从其他人的自由软件中得到的好处表达谢意。在学术界中，有许多人创作自由软件来确保有更多人能够从他们的研究成果中得到好处。在商业界中，也有人利用协助维护自由软件的机会来确保他们在软件发展的过程中占有一席之地 &#8212; 当您需要某些新功能时，没有比自己动手做要来得更快的方法了。当然，我们之中也有许多人纯粹只是觉得这样十分的好玩。” 或许这就叫“自由”。不向任何商业法则低头妥协，出于一种很单纯的目的，就像我现在拿着一道题去问苯酚和魔王他们会给我详细解答一样。我明白了，他们也很有成就感了。 任他们讥讽什么乌托邦、理想主义好了。当我们在自由的大道上飞驰的时候，他们已经因为自己的老成世故而湮没在我们的背影中了。 本文由 Malloc 创作，转载或引用前请联系我们。相关文章： 我们需要Linux们吗
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/08/%e6%88%91%e4%bb%ac%e9%9c%80%e8%a6%81linux%e4%bb%ac%e5%90%97.html' rel='bookmark' title='我们需要Linux们吗'>我们需要Linux们吗</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>现在已经离不开linux了。</p>
<p>刚开始用的时候纯粹就是好奇和标榜自己的与众不同。当别人在讨论windows的问题时，自己来一句“我用linux的”，相当满足。<br />
随着年龄、阅历和知识的渐长，自己也在思考和了解一些东西。最重要的一点就是：不要去在乎你选择了一个名叫XX的操作系统，而是去想想这个操作系统能带给你什么。</p>
<p><span id="more-43"></span></p>
<p>无 论是windows、linux、macos、solaris抑或那些不知名的操作系统，他们的底层都是一致的，遵循着大致一样的操作系统理论。只有在高 一点层面上，他们才开始表现出不同。就是在这些层面上，凸现了他们不一样的设计理念，也反射着设计者的价值信条。所以经常有人常常骂微软的独裁；也经常有 人嘲讽linuxers是群满脑子乌托邦的理想主义者。</p>
<p>初识linux的我在安装软件时一遍又一遍的碰壁，翻遍目录找不到想要的软件，G遍天下网 页而找不到正解，有时真想甩头重新奔回windows，但当不熟练地键入&#8221;sudo reboot&#8221;，正要回车时，犹豫了。有个声音告诉我，要留下来。这个声音是如此强烈，让我想起了小时候捣鼓弹弓、泡沫船、纸飞机的情形和刚买回电脑时拆 了主机玩弄主板被电到的感觉。不断涌现着的还有那些在windows上不曾学到过的关于硬件和网络的知识。手轻轻滑落键盘，望着只有光标在闪烁的命令行界 面，猛地醒悟 “你要去创造一个你的世界”。linux就像一个忠实含蓄的高明管家，陪伴着你去创造你的世界。<br />
我以前常常在想那些写出一个又一个开源软件包的到底是些什么人。在这个“万事皆谈利”的年代，他们肯腾出那么多宝贵的时间作一些Free的东西。现在知道这个Free对于他们来说不是免费而是自由。在debian的自我介绍上可以看到这么一些话<br />
<span style="font-size: 100%;"><span style="font-family: webdings;"><br />
“您也许会奇怪: 为什么人们愿意花费他们自己的时间来写软件，谨慎的包装它，然后 再把它全部</span><em style="font-family: webdings;">送</em><span style="font-family: webdings;">给别人？正如同有许多不同的人选择做出这样子的贡献一样，这 个问题也有许多不同的答案。有些人<span style="color: #ff9900;">只是喜欢帮助别人</span>。有些人利用<span style="color: #ff9900;">写程序来学习更多关于计算机方面的知识</span>。也有些人是在寻找<span style="color: #ff9900;">一种避免软件价格膨胀的途径</span>。还有越来越多的 人是为了对他们从其他人的自由软件中得到的好处<span style="color: #ff9900;">表达谢意</span>。在学术界中，有许多人创作自由软件来确保有更多人能够<span style="color: #ff9900;">从他们的研究成果中得到好处</span>。在商业界中，也有人利用协助维护自由软件的机会来确保他们<span style="color: #ff9900;">在软件发展的过程中占有一席之地</span> &#8212; 当您需要某些新功能时，没有比<span style="color: #ff9900;">自己动手</span>做要来得更快的方法了。当然，我们之中也有许多人纯粹只是觉得这样十分的<span style="color: #ff9900;">好玩</span>。”</span></span></p>
<p>或许这就叫“自由”。不向任何商业法则低头妥协，出于一种很单纯的目的，就像我现在拿着一道题去问苯酚和魔王他们会给我详细解答一样。我明白了，他们也很有成就感了。<br />
任他们讥讽什么乌托邦、理想主义好了。当我们在自由的大道上飞驰的时候，他们已经因为自己的老成世故而湮没在我们的背影中了。</p>
<p><small>本文由 Malloc 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/08/%e6%88%91%e4%bb%ac%e9%9c%80%e8%a6%81linux%e4%bb%ac%e5%90%97.html' rel='bookmark' title='我们需要Linux们吗'>我们需要Linux们吗</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2009/01/linux.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

