列表习题

匿名 (未验证) 提交于 2019-12-02 23:37:01

#求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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!