問題1-5參見 http://www.reibang.com/p/f333469fe784
6购披、平方的和與和的平方之差
??前10個自然數(shù)平方的和是:1^2 + 2^2 +… + 10^2 = 385伟阔。前10個自然數(shù)和的平方是:(1 + 2 + … + 10)^2 = 55^2=3025洼滚。因此前10個自然數(shù)的平方的和與和的平方之差是 3025?385=2640。求前100個自然數(shù)平方的和與和的平方之差伐蒋。
Python3解答
an=sum(i**2 for i in range(1,101))
fan=sum(i for i in range(1,101))**2
print(fan-an)
答案:25164150
7巢墅、第10001個素?cái)?shù)
??如果要依次列出前6個素?cái)?shù)的話,它們是:2炸宵、3辟躏、5、7土全、11和13捎琐』嵯眩可以看出,第6個素?cái)?shù)是13。求第10001個素?cái)?shù)。
Python3解答
def an_prime(number):
if number==1 or number==0:
return False
for i in range(2,int(number**0.5)+1):
if number%i==0 and number>i:
return False
return True
d,count=0,0
while 1:
if an_prime(d):
count+=1
if count==10001:
break
d+=1
print(d)
答案:104743
問題8伸但、連續(xù)數(shù)字最大乘積
??在下面的1000個正整數(shù)中,連續(xù)4個數(shù)字的最大乘積是 9 × 9 × 8 × 9 = 5832练慕。
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
找出這個1000個正整數(shù)中乘積最大的連續(xù)的13個數(shù)字,求它們的乘積技掏。
Python3解答
#將以上數(shù)據(jù)復(fù)制到txt文件:secries.txt
an=[]#存儲數(shù)據(jù)
for line in open(r'C:\Users\GWT9\Desktop\ss.txt'):#讀取數(shù)據(jù)
for i in line:
for j in i:
if j!='\n':
an.append(int(j))
zuida=13
fan={}#存儲連續(xù)13個數(shù)字的乘積
for i in range(0,len(an)+1-zuida):
ss=1
for j in an[i:i+zuida]:
ss*=j
fan[i]=ss
#選擇字典中值最大的對應(yīng)的鍵值
maxkey=max(fan.items(),key=lambda x:x[1])
print(an[maxkey[0]:maxkey[0]+zuida])#[5, 5, 7, 6, 6, 8, 9, 6, 6, 4, 8, 9, 5]
print(maxkey)
答案:23514624000
9铃将、特殊的畢達(dá)哥拉斯三元組
??畢達(dá)哥拉斯三元組是三個自然數(shù)a < b < c組成的集合,并滿足a^2+ b^2 = c^2哑梳。 例如3^2 + 4^2 = 9 + 16 = 25 = 5^2劲阎。有且只有一個畢達(dá)哥拉斯三元組滿足 a + b + c = 1000。求這個三元組的乘積abc鸠真。
Python3解答
for i in range(1,300):#abc最小值肯定低于300
for j in range(1,500):#abc中間值肯定低于500
if i**2+j**2==(1000-i-j)**2:
print(i,j,1000-i-j)#200 375 425
print(i*j*(1000-i-j))
答案:31875000
10悯仙、素?cái)?shù)之和
??所有小于10的素?cái)?shù)的和為2 + 3 + 5 + 7 = 17。求小于兩百萬的所有素?cái)?shù)之和吠卷。
Python3解答
#一般方法:全部數(shù)字都遍歷 用時(shí):23.517s
def an_prime(number):
for i in range(2,int(number**0.5)+1):
if number%i==0 and number!=i:
return False
return True
anfan=0
for i in range(2,2000000):#全部遍歷
if an_prime(i):
anfan+=i
print(anfan)
#優(yōu)化方法:數(shù)字篩選 用時(shí):0.124s
def primes(n):
an=[True]*n
for i in range(3,int(n**0.5)+1,2):#消去合數(shù)
if an[i]:
an[i*i::2*i]=[False]*int((n-i*i-1)/(2*i)+1)
primelist=[2]+[j for j in range(3,n,2) if an[j]]
return sum(primelist)
print(primes(2000000))
答案:142913828922
持續(xù)更新锡垄,歡迎討論,敬請關(guān)注3纺邸!蠢终!