欧拉计划(鱼C论坛)@20161111

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)+"秒")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值