目錄
- 試題A:裁紙刀
- 試題C:質因數個數
- 埃拉託斯特尼篩法求素數
- 試題J:數的拆分
- 題解
試題A:裁紙刀
-
分析:可以舉幾個例子出來發現規律是:4+(m-1)+(n-1)m;4表示邊緣4刀,m-1表示橫著切的數量,(n-1)m表示豎著切的數量
-
結果:4+19+21*20=443
試題C:質因數個數
埃拉託斯特尼篩法求素數
- 分析:先列出2到n之間的質數存入列表,再用n挨個除以質數列表,是倍數計數加一
import math
def countPrimes1(n):
isPrime=[True for i in range(n)]
for i in range(2,int(math.sqrt(n))+1):
if isPrime[i]:
for j in range(i*i,n,i):
isPrime[j]=False
re=[]
for i in range(2,n):
if isPrime[i]:
re.append(i)
return re
count=0
n=int(input())
re=countPrimes1(n)
for i in re:
if n%i==0:
count+=1
print(count)
-
14分;n太大,埃拉託斯特尼篩法適合n小的情況
-
詳細正確答案見 https://www.cnblogs.com/lushuang55/p/17853198.html
試題J:數的拆分
題解