声明:该系列文章首发于公众号:Y1X1n安全,转载请注明出处!本公众号所分享内容仅用于每一个爱好者之间的技术讨论,所有渗透及工具的使用都需获取授权,禁止用于违法途径,否则需自行承担,本公众号及作者不承担相应的后果。
Write a program which will find all such numbers which are divisible by 7 but are not a multiple of 5,
between 2000 and 3200 (both included).The numbers obtained should be printed in a comma-separated sequence on a single line.
写一个程序,找到所有能被7整除但不是5的倍数的数字,2000年至3200年之间(两者都包括在内)。获得的数字应以逗号分隔的顺序打印在一行上。
Consider use range(#begin, #end) method.
考虑使用范围(#begin,#end)方法。
Main author’s Solution: Python 2
l=[]
for i in range(2000, 3201):
if (i%7==0) and (i%5!=0):
l.append(str(i))
print ','.join(l)
时间复杂度为 O(n),其中 n 是从 2000 到 3200 之间符合条件的数字的个数。空间复杂度为 O(m),其中 m 是符合条件的数字的个数,因为需要将这些数字存储在列表或字符串中。
l=[] # 创建一个空列表,用于存储符合条件的数字
for i in range(2000, 3201): # 遍历2000到3200之间的所有整数(包括2000和3200)
if (i%7==0) and (i%5!=0): # 判断是否符合条件:能够被7整除但不能被5整除
l.append(str(i)) # 如果符合条件,则将该数字转换为字符串,并添加到列表l中
print ','.join(l) # 将列表l中的所有元素用逗号连接起来,并输出到控制台
整个代码使用了for循环遍历2000到3200之间的所有整数(包括2000和3200),并使用条件语句判断每个数字是否符合条件。如果符合条件,则将该数字转换为字符串,并添加到一个空列表中。最后,使用join()函数将列表中的所有元素用逗号连接起来,并输出到控制台。
append() 是 Python 列表(List)对象的一个方法,用于向列表的末尾添加一个元素。它的语法为:
list.append(elem)
其中,list 是要添加元素的列表对象,elem 是要添加的元素。执行该方法后,elem 将被添加到 list 的末尾。
示例:
my_list = [1, 2, 3]
my_list.append(4)
print(my_list) # 输出 [1, 2, 3, 4]
在上面的示例中,append() 方法将整数 4 添加到了 my_list 列表的末尾。
My Solution: Python 3
for i in range(2000,3201):
if i%7 == 0 and i%5!=0:
print(i,end=',')
print("\b")
时间复杂度为 O(n),其中 n 是从 2000 到 3200 之间符合条件的数字的个数。在最坏的情况下,需要遍历从 2000 到 3200 之间的所有数字,即 n = 457。在每次迭代中,只需要进行两个取模运算和一个条件判断,这些操作的时间复杂度都是 O(1)。因此,整个代码的时间复杂度为 O(n)。
空间复杂度也很小,只需要存储符合条件的数字的个数,因此它的空间复杂度为 O(1)。
1、for i in range(2000,3201):对于从 2000 到 3200(包括 2000 和 3200)之间的所有整数,依次执行下面的操作。
2、if i%7 == 0 and i%5!=0::如果当前的数字能够被 7 整除且不能被 5 整除,执行下面的操作。
3、print(i,end=','):输出当前的数字,并在数字之后加上逗号,而不是换行符。
4、print("\b"):在所有数字输出完毕后,输出一个回退字符(backspace),从而删除最后一个逗号。
print(*(i for i in range(2000, 3201) if i%7 == 0 and i%5 != 0), sep=",")
时间复杂度为 O(n),其中 n 是从 2000 到 3200 之间符合条件的数字的个数。空间复杂度为 O(1),因为不需要额外的空间来存储符合条件的数字。
1、print(*(...), sep=","):使用print()函数输出括号中的内容,每个元素之间用逗号分隔。
2、(i for i in range(2000, 3201) if i%7 == 0 and i%5 != 0):生成器表达式,用于生成从2000到3200之间能够被7整除但不能被5整除的所有数字。
range() 是 Python 中的一个内置函数,用于生成一个整数序列。它的语法如下:
range(stop)
range(start, stop[, step])
参数说明:
start:可选,生成的整数序列的起始值(默认为 0)。
stop:必选,生成的整数序列的终止值(不包括该值)。
step:可选,生成的整数序列的步长(默认为 1)。
3、*:解包操作符,用于将生成器表达式生成的所有元素解包为print()函数的不定长参数。
4、sep=",":指定输出的元素之间用逗号分隔。
Y1X1n Solution: Python 3
result = ""
for i in range(2000, 3201):
if i % 7 == 0 and i % 5 != 0:
if result:
result += ","
result += str(i)
print(result)
时间复杂度为 O(n),其中 n 是从 2000 到 3200 之间符合条件的数字的个数。在最坏的情况下,需要遍历从 2000 到 3200 之间的所有数字,即 n = 457。在每次迭代中,只需要进行两个取模运算和一个条件判断,这些操作的时间复杂度都是 O(1)。同时,对于每个符合条件的数字,需要将它转换为字符串,并将它添加到 result 中。这些操作的时间复杂度也是 O(1)。因此,整个代码的时间复杂度为 O(n)。
空间复杂度取决于符合条件的数字的个数,因为需要将这些数字存储在 result 字符串中。在最坏的情况下,所有数字都符合条件,因此需要存储 457 个数字。因此,它的空间复杂度为 O(n)。
如果你对网络安全或编程感兴趣,可以搜索公众号“Y1X1n安全”,每天都会分享相关知识点,让我们一同加油!路漫漫其修远兮,吾将上下而求索。