Python编程:探索素数与模式识别的奥秘
创始人
2024-12-15 12:19:25
0 次浏览
0 评论
python求某个范围的素数
defis_prime(m):"""判断m是否为素数"""foriinrange(2,int(m**(1/2))+1):ifm%i==0:returnFalseelse:returnTruedefall_prime(m,n):"""输出m到n之间的所有素数"""primes=[]foriinrange(m,n+1):ifis_prime(i):primes.append(i)returnprimesprint(all_prime(50,100))
程序缩进为我显示图片python在100到200之间的一个随机的偶数?
创建数组100,102,104,...,200随机生成1到50的数字,作为下标,指向对应的偶数即可#!/usr/bin/python3#-*-coding:UTF-8-*-importrandomx=间隔(100,201,2)i=0whilerei<=50:index=random.randint(1,50)print("%d->%d"%(index,x[index]))i+=1#("Helloworld!")结果:第1部分->1021->10215->13013->12649->1984->10830->16045->190什么是模式?
这是一个很好的问题人们经常说“这个或那个没有模式”之类的话,而没有首先就“模式”的含义达成一致。当他们说某事物具有模式时,他们通常通过指定模式来解释其含义,但是当他们说某事物没有模式时,他们必须(但很少这样做)澄清其底层“模式”的范围,请记住这一点,因为这样的否定陈述必须引用某种可能的模型。
如果你没有全部看过,你就不能说它们不存在。
Quora上的科普文章中有两个非常糟糕的例子,涉及两个高度模式化的对象:素数和十进制扩展数[math]\pi[/math]。
这两种说法常常被驳回,称为“无模式”。
,”是一个毫无意义的陈述,一个真实但无趣的陈述,或者,更合理的是,一个错误的陈述,但在我这样做之前,让我提供我认为唯一合理的答案。
对于“什么是模式?”这个问题:模式是对我们正在研究的对象的更简短的描述,它似乎捕捉到了我们大多数人所说的“嘈杂的模式”的意思——一张图像,一张。
注册,一系列数字-没有简短的描述,而有图案的东西,比如被子,有图案的衣服或壁纸,或者其他什么,有这样的简短描述,这里有两个问题:到底什么构成了“描述”以及“更短”需要多短(注:我有意识地决定避免讨论概率模型,概率模型使我们能够以一些不错的几率来描述一个序列,但并不完全准确。
这是一组完全不同的替代方案,但大多数人不会称之为“这是散布在“模式”上的随机噪声的模式序列”)。
第一个问题相对容易解决。
“描述”是一种算法,即产生整个对象的机械过程。
今天,我们对“算法”的确切含义有几种标准定义,虽然它们在细节和效率上有所不同,但它们在很大程度上是相同的。
“较短”的事情不太清楚。
描述必须有多高效才能被称为“模型”?已经提出了这个问题的几个替代答案。
第一个答案是我最喜欢的,它适用于无数的主题。
在这种情况下,“较短”的含义几乎没有什么混淆:它意味着有限。
干净简单。
毫无疑问,有限的描述比无限的对象要短得多,所以如果我们有这样的有限的描述,我们当然可以说该对象是高度建模的。
一旦你消化了这个有限的描述,你就可以控制整个事情:你可以绝对精确地预测他随时会做什么。
如果不出意外的话,这就是一种模式。
但你可能会问:如果我们允许描述尽可能大,那么不是所有无限的对象都有有限的描述吗?答案是否定的。
事实上,每当我们关注一组特定的对象时,例如无限数量的位或数字或数字序列,或无限的几何结构或其他任何东西,总是存在对那些构成一小部分的对象的有限描述。
宇宙。
到目前为止,大多数对象都没有任何有限的描述。
这是可数无限和不可数无限之间差异的结果:有许多有限算法,但有无限多个对象(在大多数情况下)感兴趣的例子)。
这就留下了在有限情况下定义“更短”含义的问题。
如果我给你10,000个数字,你能用50个字符长的描述、算法或过程对它们进行编码吗?这是一种模式吗?当然。
如果有500个呢?也许还是有模式的。
如果有5,000个怎么办?这是有争议的。
还有9,997?一个可能但相当极端的答案是,如果序列可以被压缩,即如果它具有更短的自身描述,即使只有一位,那么它就被建模。
为此,有必要就一种特定且精确的语言达成一致,例如“Python程序”。
根据这个定义,唯一的非模式字符序列是那些不可能由比自身短的字符生成的字符序列。
这是一个非常严格的要求,但它提供了自然而清晰的响应。
例如,考虑10,000个字母的序列。
如果它是令人难以置信的随机,那么编写生成它的程序的唯一方法是编写一行“打印
但是,如果该序列大约有25个重复的字母,您可以轻松编写一个非常短的程序来生成它。
此外,即使序列包含100个连续Z的序列,您也可以通过将序列的该部分替换为“print100Z”来缩短描述,Python和任何其他编程语言都可以轻松地将其放入100个字符中。
因此,根据这个定义,疯狂的随机噪声已被“建模”,其中具有局部结构。
您可能会认为这还不够,您希望一切都建模。
这很有趣,需要详细阐述一些其他压缩或“缺乏描述”的定量度量。
例如,您可以要求尺寸为1,000的每个部分至少可压缩50%。
这是一个很好的定义,但似乎有点武断。
这就是为什么许多人更喜欢关注无限的物体:没有歧义,也不需要任意的定量测量。
如果序列是可有限描述或可计算的,则该序列被建模。
否则就不是。
最后,在频谱的另一端,有“儿童对模式的定义”:模式是重复的序列。
ABACABACABAC是有模式的,但任何不简单重复的东西都不是。
这是相反方向的严格要求:它留下很少的模式序列,甚至不允许我们说aBaCaDaEaFaG是模式。
这个定义没有什么不合理的,这确实是许多小学生说的“这是一种模式,但对于大多数成年人来说,它似乎限制太多了!”时的意思。
有很多东西不是重复的,而是高度结构化或“模式化”的。
例如,Prouhet-Thue-Morse序列并不重复,但非常结构化。
让我们看看这些定义如何应用于一些流行的例子。
对于我们未经训练的人来说,十进制扩展中的pi数字序列似乎是任意的。
但是,当然,这个无限序列的描述非常简短。
有一些非常简单的算法可以永远准确地生成这些数字(只要有足够的资源,例如内存和电量)。
当然,它比“从1开始,添加3并重复”稍微复杂一点,但只是更长一点。
就Python程序而言,这是一个小程序,描述了非常简洁清晰的模式。
让我再次强调,这是非常不寻常的。
从这个意义上说,大多数实数绝对是荒谬的,并且不能由任何有限程序生成,无论多长。
这凸显了这样一个事实:pi是一个非常特殊的实数,非常精确并且非常容易理解。
当然,这同样适用于其他显式常量,例如e或17−−√等,但请记住:绝大多数实数根本不是这样的。
孩子的定义是什么?嗯,圆周率是无理数,所以它的数字不会简单地重复。
所以,是的,根据这个定义,十进制扩展中的pi数字没有模式,对于任何无理数也是如此,包括0.90900900090000900000...称这个序列“不是模式”似乎有点愚蠢。
在这一点上,可能值得一提“无模式”的另一个可能的定义,我认为它太弱了,但有些人(有意或无意)有时会提到它。
这是一个知道在无限的字符或数字序列中是否存在一些具有预期渐近密度的可能的有限序列的问题。
例如,999应该出现0.1%的时间,314和432以及任何其他3位数序列也应该出现。
“0.1%的时间”是指序列出现在第一个数字n的次数,作为分数n,考虑极限为n→∞这是随机性的一个极好的性质,满足它的序列就是称为“正态”或“分布式∞”(Knuth术语)。
问题是它缺乏许多非常简单的模式。
例如,Champignon常数0.123456789101112131415...只要将所有自然数一一写入,这很正常,但忽略它基于一个非常简单的方案这一事实似乎非常错误。
如果您更喜欢称其为“无模态”,那很好,但是这么说-然后承认我们不知道pi是否具有此属性,而许多简单的序列确实具有此属性。
(这是我再次推荐高德纳独特的系列书籍《计算机编程的艺术》的机会,第2卷正是处理这些问题,高德纳试探性地提出了∞——作为随机属性分布,然后立即消除)。
还有质数?它们的结构略有不同:它们不是无限的数字序列,而是无限的数字序列。
但我们对可计算性的定义仍然成立,素数显然是可计算的。
Quora上有一百万个问题询问素数是否可以“预测”、“计算”、“有一个公式”或“有一个模式”——所有这些问题都是相同的,并且都有相同的答案:是的,显然。
同样,这并不意味着它们不能在统计上一致或它们不能表现出随机序列的“行为”。
他们确实如此,而且确实如此。
但每当数学家提出依赖于素数“随机”行为的启发式论证时,他们总是会添加一个警告,即该论证显然是无意义的:素数是一个非常特定的序列,而不是一个随机序列。
然而,由于素数的随机性,这样的话题可以教会我们很多东西。
相关文章
Python生成器教程:掌握两种创建方法...
2024-12-14 21:03:53Python列表转字符串技巧:轻松实现元...
2024-12-19 23:20:05Python列表详解:定义、方法与元素计...
2024-12-18 23:35:32Python数字转字符串:简单方法与列表...
2024-12-16 12:04:01Java编程技巧:静态块使用与错误处理实...
2024-12-17 23:18:24Python字符串比较与操作指南:相等性...
2024-12-18 06:49:03Python遍历列表:基础操作与实用技巧...
2024-12-15 12:10:15Python转义序列处理与数字中英转换技...
2024-12-16 07:02:28Python求1-100奇数之和:for...
2024-12-15 19:28:58深入浅出:逻辑运算符在编程中的应用与实例...
2024-12-17 11:50:15最新文章
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
23
2024-12
热门文章
1
Python编程入门:全面解析Pytho...
python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...
2
Python字典操作全解析:添加、修改、...
Pythondict字典基本操作(包括添加、修改、删除键...
3
Python错误处理与异常处理:构建稳定...
2.5错误处理与异常在编程领域,错误处理和异常处理是保证程序稳定性和健壮性的关键...
4
Python数据转换攻略:字符串、列表、...
Python字典、字符串及列表的相互转换Python中数据转换的艺术:从字典和字...
5
Python列表相加与求和技巧解析
重温python基础:列表相加的方法(两个list[]加法)今天,我们来看看Py...
6
Python运行快捷键大揭秘:高效操作,...
python运行按哪个键运行Python时的快捷键包括Ctrl+Shift+F1...
7
Python字符与数字互转攻略:轻松掌握...
python 字符与数字如何转换Python是一种功能强大且结...
8
Python字符串转列表:两种常用方法解...
python怎么将字符串转换为列表Python中将字符串转换为列表的方法有多种,...
9
Python字符串转列表:两种常用方法解...
python怎么将字符串转换为列表在Python中将字符串转换为列表的方法有很多...
10
Python列表转字符串全攻略:掌握四种...
Python列表到字符串–如何在Python中转换列表在Python中,将列表转...