zoukankan      html  css  js  c++  java
  • project euler 12 Highly divisible triangular number

    
    
    Highly divisible triangular number
    
    
    Problem 12
    
    
    The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:
    
    1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
    
    Let us list the factors of the first seven triangle numbers:
    
     1: 1
     3: 1,3
     6: 1,2,3,6
    10: 1,2,5,10
    15: 1,3,5,15
    21: 1,3,7,21
    28: 1,2,4,7,14,28
    
    We can see that 28 is the first triangle number to have over five divisors.
    
    What is the value of the first triangle number to have over five hundred divisors?
    
    
    
    


    def
    divisor(num,j): count1 = 1 count2 = 1 if num%2 == 0: lst1 = [num//2] lst2 = [num+1] else: lst1 = [(num+1)//2] lst2 = [num] for i in range(2,lst1[0]): if lst1[0] % i ==0: count1 += 1 # print(i) lst1.append(i) for i in range(2,lst2[0]): if lst2[0] % i ==0: count2 += 1 lst2.append(i) count = count1 + count2 + count1*count2 return count n = 1 import time print(time.time()) while True: j = n*(n+1)//2 if str(j)[-1] != '0': #print(n) n += 1 continue count = divisor(n,j) # print(j,n,count) n += 1 if count >= 500: print(j,n,count) break print(time.time()) 1462342495.953848 76576500 12376 575 1462342499.651143

    约4S

    对求因子的算法进行一点改进,能提高一半效率。

        for i in range(2,lst1[0]//2+1):
    
    
        for i in range(2,lst2[0]//2+1):


    >>> 
    1462414510.288464
    76576500 12376 575
    1462414512.207313
    

    再次对求因子进行改进,效率提高10倍!!

        for i in range(2,int(sqrt(lst1[0])+1)):
            if lst1[0] % i ==0:
                count1 += 2
    1462415389.778016
    76576500 12376 575
    1462415389.91842
    >>> 


     

  • 相关阅读:
    数据结构和算法之最大堆
    AStar
    合并SkinnedMeshRender实现换装
    Asp.net MVC 解决:CS0308: 非泛型 方法“System.Web.Mvc.Html.LinkExtensions.ActionLink
    使用jquery解析Json , 浏览器之间数据格式校验的细微差异.
    Js跳转代码代替RedirectToAction是否违背MVC
    情 人 节 快 乐
    UCenter 1.5.0 整合 Bug
    ping [主机名] 4
    关于VS2008调试时端口号不一致的问题
  • 原文地址:https://www.cnblogs.com/zhourong1104/p/5458243.html
Copyright © 2011-2022 走看看