从零开始的Python ACM Ch.6:质数与整数练习
孪生素数
问题描述本节要研究孪生素数的问题,先来看看什么是孪生素数。所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离己经近得不能再近了,如同孪生兄弟一样,故将这一对素数称为孪生素数。显然,最小的一对孪生素数是(1,3)。我们可以写出3、100以内的孪生素数,一共有8对,分别是(3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61)和(71,73)。随着数字的增大,孪生素数的分布也越来越稀疏,人工寻找孪生素数变得非常困难。关于孪生素数还存在着一个著名的猜想一孪生素数猜想,即孪生素数是否有无穷多对,这是数论中还有待解决的一个重要问题。此处我们只讨论在有限范围内的孪生素数求解问题。
本节要解决的问题:编程求出3、1000以内的所有孪生素数。
其实很简单,直接遍历就好了
123456789101112131415161718192021222324252627from math import sqrtdef isPrime(num): if num == 2: return True if num % 2 == 0: re ...
从零开始的Python ACM Ch.5:练习系列
求素数
问题描述求给定范围start、end之间的所有素数。
问题分析素数指的是只能被1和它自身整除的整数。判定一个整数m是否为素数的关键,就是要判定整数m能否能被除1和它自身以外的其他任何整数所整除,若都不能整除,则m为素数。本题求的是给定范围start、end之间的所有素数,考虑到程序的通用性,需要从键盘输入start和end的值,例如输入sta:1,end=1000,则所编写的程序应能够打印出1、1000之间的所有素数。
求素数的方法参考:判断一个数是否为质数(素数)的4种方法_是杰夫呀的博客-CSDN博客_如何判断一个数是不是质数
1234567891011121314151617181920from math import sqrtstart = int(input('Start: '))end = int(input('End: '))def isPrime(num): if num == 2: return True if num % 2 == 0: return False i = 3 w ...
从零开始的Python ACM Ch.4:序列和字符串的算法
UVa272 TeX中的引号TEX Quotes - UVA 272 - Virtual Judge (vjudge.net)
在Tex中,左引号是``,右引号是’ ‘。
给定一段包含双引号的段落,你的任务是把它转换成Tex的格式。
个人题解1234567891011121314151617181920212223ArticleInput = '''"To be or not to be," quoth the bard, "thatis the question".The programming contestant replied: "I must disagree.To `C' or not to `C', that is The Question!"'''flag = FalseArticleOutput = ''start = 0for place in range(len(ArticleInpu ...
从零开始的Python ACM Ch.3:队列、链表与二叉树
队列队列,跟现实中一样,遵循先进先出的原则FIFO,从尾巴进去,从头部出来
用列表模拟队列1234567891011class Queue: def __init__(self): self.data = [] def enquen(self, value): self.data.append(value) def dequen(self): value = self.data[0] del self.data[0] return value
删除会比较慢(不如链表构建的队列),因为每次del都是一个完整的O(n)操作
用链表模拟队列1234567891011121314151617181920212223242526272829303132class Node: def __init__(self, value=None, next=None): self.value = value self.next = nextclass Queue: def ...
从零开始的Python ACM Ch.2:时间复杂度、栈、面向对象及链表
列表与字典的时间复杂度列表的ls.append()复杂度是O(n),字典的插入dt['key'] = value的复杂度是O(1)。Python自带的字典排序ls.sort()复杂度是O(nlogn)(这个排序算法是用C语言写的,基本上自己在Python里面写的排序算法都没有它快
栈(Stack)基本操作:
压栈 stack.append(element)
出栈 del stack[-1]
判断是否为空 len(stack) == 0
面向对象的Python编程以栈对象为例
123456789101112class Stack: def __init__(self, x, y): # 构造类里面的函数,在每次实例化的同时会自动调用__init__函数 self.x = x self.y = y self.summary = x + ys = Stack(3, 4) # 得到一个Stack类型的实例(实例化)print(s.x, s.y, s.summary)'''=== Ou ...
从零开始的Python ACM Ch.1:数据类型及基本数据处理
基本数据类型可迭代数据类型通用操作:
遍历
max
min
sum
len
成员测试 in、not in
序列数据类型通用操作:
索引
切片
index
count
同类型加法拼接
整数乘法重复
字符串不可变数据类型(对字符串的所有修改操作,都是返回一个新的字符串)
特有操作:
s.upper()
s.lower()
s.replace(sub1, sub2)
s.join(Iterable[str])
s.format()
s.split(c)
元组不可变数据类型,基本是拿来用索引,或者切片
列表可变数据类型
特有操作:
通过索引进行修改
通过切片进行修改
ls.append(x)
del ls[i] i为元素索引
ls.remove(x) x为元素值
ls.extend(lt2)
ls.insert(i, x)
ls.reverse()
ls.clear()
列表表达式
集合 & 字典集合中的元素、字典的键 都必须为不可变数据类型,不能重复
如果直接对字典进行for循环的遍历,那么出来的是字典的 ...
使用Python和Qt5来制作带有GUI的程序(持续更新)
我还是向我不熟悉的领域发起了挑战——制作GUI
印象中我做GUI只有在MIT App Inventor (gzjkw.net)和Visual Basics里面做过(下图为以前拿去参赛的作品,获得了省三),而且VB很久都没用过了
这回主要是创新项目的需要,要做一个带有GUI的附属程序,所以我研究起了怎么做GUI
我用的是比较知名的Qt5这个东西(本来还尝试过dearpygui Tkinker pygame之类的,但是因为感觉太繁琐了就不用了)
Raspberry 4B 折腾记录(持续更新)
烧录系统我用的是balenaEtcher这个软件(别问为什么,问就是好看),比起Win32DiskImager和Rufus来说更好用一点(个人感觉)
(↓没插读卡器所以用磁盘代替一下,千万别写入磁盘!)
对ext4格式的存储介质进行写入我用的是DiskGenius,但是不知道为什么在我的电脑上打开会提示这个……
Err: NTLEAS may be lost connection with hook process.
我这个用的是5.1.1的中文专业版(免费版不能对ext4格式进行写入),因为打不开所以我去换了个版本。
从网上下了个5.2.0.884就好了,就,很奇怪,估计是这个版本的问题。
重装Kali Linux后在无屏幕的条件下自动连接WIFI(未解决)这个我在网上找了很多方法,但是我发现很多他们都是用的树莓派自己的Debian衍生系统,用的不是Kali,这个方法用在Kali上等于无效……
直到我发现了这几个
树莓派 kali Linux 开机自动连接WiFi (bash 脚本)_yayaleII的博客-CSDN博客_kali自动连接wifi
kali(64位)在树莓派4B的 ...
2022网鼎杯青龙组——个人WriteUP
签到没啥技术含量,求助于万能的 百度 Bing
crypto091小A鼓起勇气向女神索要电话号码,但女神一定要考考他。女神说她最近刚看了一篇发表于安全顶会USENIX Security 2021的论文,论文发现苹果AirDrop隔空投送功能的漏洞,该漏洞可以向陌生人泄露AirDrop发起者或接收者的电话号码和电子邮箱。小A经过一番努力,获得了女神手机在AirDrop时传输的手机号哈希值,但再往下就不会了,你能继续帮助他吗?小A只记得女神手机号是170号段首批放号的联通号码。
Hash:c22a563acc2a587afbfaaaa6d67bc6e628872b00bd7e998873881f7c6fdc62fc
flag格式:flag{13位电话号码(纯数字,含国家代码)}
170号段首批放号的联通号码:1709
限定做法:Hash爆破
Hash为64位,因此Hash的计算方法是sha256
123456789101112import hashlibprefix = '861709' # 联通首批放号的电话号码头compare_hash = ...
Ticwatch Pro 3 使用体验报告
最近因为游泳,带着我的小米手环6,结果第二天游泳下来发现,它的屏幕不好使了,有鬼触的现象,于是就想换一块表
因为身边用OPPO Watch 2的人比较多,我又不想跟他们用一样的东西,于是我另辟蹊径,找其他的表
一开始看到米表,但是据说配置拉胯,就不考虑了,然后看到了出门问问家的Ticwatch pro 3,这是一个搭载着Google WearOS的智能手表,不过当然有着中国化的成分(指删除大量谷歌服务)
跟鱼子市场的卖家进行大量沟通后,我以合适的价格拿下了这块表
接着就开始折腾了,拿到手是一块啥东西都没设置的新表,会进入“新手引导”模式,我也是花费了一定的时间才弄好
折腾环节
按下右上方的按键就可以打开启动器,从启动器打开软件
从应用商店安装软件官方的应用商店就跟App Store一样,一键下载安装就行,其实没啥难度,这里就附几张图吧
使用adb安装软件使用计算机从adb安装软件这个要求打开adb,跟手机的开启方法一样,连续点击版本号开启开发者选项,然后在开发者选项里面找到adb调试,把它和通过WLAN调试都打开
让手表和电脑连到同一个WIFI,查看手表的IP地址,接着电 ...