6、找出前一百个自然数的平方和与和平方的差
#找出前一百个自然数的平方和与和平方的差
import time
start=time.clock()
def pfh(n):
s=0
for i in range(1,n+1):
s=s+i**2
return s
def hpf(n):
s=0
for i in range(1,n+1):
s=s+i
return s**2
print(hpf(100)-pfh(100))
end=time.clock()
print("耗时:"+str(end-start)+"秒。")
7、找出第10001个质数。
import time
import math
start=time.clock()
def isPrime(n):
if n<2:
return False
elif n==2:
return True
else:
m=int(math.sqrt(n))
for i in range(2,m+1):
if n%i==0:
return False
return True
count=0
i=2
while count<10001:
if isPrime(i):
count+=1
i+=1
continue
else:
i+=1
print(i-1)
end=time.clock()
print("耗时"+str(end-start)+"s")
8、找出某个1000位数的整数中连续13个数字的最大乘积
#找出某个1000位数的整数中连续13个数字的最大乘积
#先定义一个把数字转换为列表的函数
def f0(m):
n=m
list=[]
while n!=0:
list.append(n%10)
n=n//10
list.reverse()
return list
def f1(m,n):
list0=f0(m)
lenth=len(list0)
s=0
for i in range(0,lenth-n+1):
m=1
for j in range(0,n):
m=m*list0[i+j]
if m>=s:
s=m
return s
m=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
x=f1(m,13)
print(x)
9、一个毕达哥达斯三元组是一个包含三个自然数的集合,a小于b小于c,且满足条件:a^2+b^2=c^2,如3^2+4^2=5^2。已知存在并且只存在一个毕达哥拉斯三元组满足条件a+b+c=1000;找出该三元组中abc的乘积。
import time
start=time.clock()
#先定义一个判断是否为毕达哥拉斯三元组的函数
def isPytha(a,b,c):
if (a+b)<c:
return False
elif a*a+b*b==c*c:
return True
else:
return False
def findS(num):
for a in range(1,num//3):
for b in range(a+1,num-1):
for c in range(b+1,num):
if isPytha(a,b,c) and a+b+c==num:
print("满足条件的三元组三个数字分别为:")
print("a="+str(a))
print("b="+str(b))
print("c="+str(c))
print("三数乘积为:"+str(a*b*c))
findS(1000)
end=time.clock()
print("运行耗时:"+str(end-start)+"秒")
10、找出两百万以下所有质数的和
#找出两百万以下所有质数的和
import math
import time
def isPrime(n):
if n<2:
return False
elif n==2:
return True
else:
m=int(math.sqrt(n))
for i in range(2,m+1):
if n%i==0:
return False
return True
def primeSum(n):
s=0
for i in range(1,n):
if isPrime(i):
s+=i
return s
start=time.clock()
print("两百万以内的质数之和为:"+str(primeSum(2000000)))
end=time.clock()
print("耗时:"+str(end-start)+"秒")