#求100内的素数
从2开始到自身的-1的数中能找到一个能整除的,可转化为从2开始到自身开平方的数中找到一个能整除的
一个合数一定可以分解成几个素数的乘积,也就是说一个数如果可以被一个素数整除就是合数
法一:
import math n = 100 lst = [] for x in range(2,n): for i in range lst: if x % i == 0: break else: print(x) lst.append(x)
法二:
import math lst = [] flag = False for x in range(2,100): for i in lst: if x % i == 0: flag = True break if i >= math.ceil(math.sqrt(x)): flag = False break if not flag: print(x) lst.append(x)
法三:
import math n = 100 pn = [] flag = False count = 0 for x in range(2,n): for i in pn: count += 1 if x % i == 0: flag = True break if i >= math.ceil(x**0.5): flag = False break if not flag: pn.append(x) print(pn) print(count)
法四:
n = 100 pn = [] count = 0 for x in range(2,n): for i in pn: count += 1 if x % i == 0: break else: pn.append(x) print(pn) print(count)
#计算杨辉三角前六行
第n行有n项,n是正整数
第n行数字之和为2**(n-1)
法一:
triangle = [[1],[1,1]] n = int(input('num')) for i in range(2,n): pre = triangle[i-1] cur = [1] for j in range(0,i-1): cur.append(pre[j]+pre[j+1]) cur.append(1) triangle.append(cur) print(triangle)
法二:
lst0 = [] for i in range(0,6): if i == 0: lst0.append([1]) elif i == 1: lst0.append([1,1]) else: pre = lst0[i-1] cur = [1] for j in range(len(lst0)-1): temp = pre[j] + pre[j+1] cur.append(temp) cur.append(1) lst0.append(cur) print(lst0)
法三:
triangle = [] n=6 for i in range(n): row = [1] triangle.append(row) if i == 0: continue for j in range(i-1): row.append(triangle[i-1][j] + triangle[i-1][j+1]) row.append(1) print(triangle)
法四(分别用for循环和while循环
#while循环 n = 6 oldline = [] newline = [1] length = 0 print(newline) for i in range(1,n): oldline = newlinr.copy() oldline.append(0)#尾部加零相当于两头加零(负索引) newline.clear() offset = 0 while offset <= i: newline.append(oldline[offset-1] + oldline[offset]) offset += 1 print(newline) print('------------') #for循环 n = 6 oldline = [] newline = [1] length = 0 print(newline) for i in range(1,n): oldline = newlinr.copy() oldline.append(0)#尾部加零相当于两头加零(负索引) newline.clear() offset = 0 while offset <= i: newline.append(oldline[offset-1] + oldline[offset]) offset += 1 print(newline)
优化:
- 能不能一次性开辟空间:
- 能不能少算一半数字
法五:
triangle = [] n=6 for i in range(n): row = [1]#开始的1 for k in range(i): row.append(1)if k == i-1 else row.append(0) triangle.append(row) if i == 0: continue for j in range(1,i//2+1):#n=3才能进来 val = triangle[i-1][j-1] + triangle[i-1][j] row[j] = wal if j != i-j:#奇数个数的中点跳过 row[-j-1] = val print(triangle)
文章来源: https://blog.csdn.net/Nikki0126/article/details/88746571