`
ryan.liu
  • 浏览: 136753 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用Python解答 ProjectEuler问题(3)

阅读更多
E003
The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

求600851475143的最大质因子。


今天重写了求素数的方法
# -*- coding:utf-8 -*-

class Prime:
    primes = [2]

    def __init__(self, maxpri):
        self.expandList(maxpri)

    def testNumber(self, x):
        """
        根据已知素数表用筛法进行测试x
        """
        assert type(1)==type(x) #x必须是整数
        if x<2:
            return False
        isPri = True
        for p in self.primes:
            if p*p>x: #只需测试被sqrt(x)以内的素数整除
                break
            elif 0==x%p: #是合数
                isPri = False
                break
        return isPri

    def expandList(self, maxpri, length=None):
        """
        扩展素数表到接近maxpri,或个数达到length
        """
        x = self.primes[-1]
        while (True):
            x += 1
            if self.testNumber(x):
                # Python中改写类成员需要用self.__class__.引用
                self.__class__.primes.append(x)
            #是否达到目标并退出
            if maxpri and x>=maxpri:
                break
            if length and len(self.primes)>=length:
                break


if __name__ == '__main__':
    max = 100    
    pri = Prime(max*max)
    print str(pri.primes)


有了上面求素数的代码,现在我们可以这样解决问题
from prime import Prime
from math import sqrt, floor

def problem3(number):
    lmt = floor(sqrt(number))
    factor = 0
    pri = Prime(lmt)
    for p in pri.primes:
        if 0==number%p:
            factor = p
    return factor

if __name__ == '__main__':
    print str(problem3(600851475143))


0
1
分享到:
评论

相关推荐

    Projecteuler_python:Projecteuler中的Python问题答案

    标题 "Projecteuler_python:Projecteuler中的Python问题答案" 指的是一个项目,其中包含使用Python编程语言解决Project Euler网站上的数学和计算机科学挑战问题的答案。Project Euler是一个非常受欢迎的在线平台,它...

    ProjectEuler 解题表格

    通过分析和学习“ProjectEuler解题表格”,不仅可以锻炼编程技能,还能了解到如何使用不同工具来优化解决问题的过程。对于想要提升自己在数学和编程领域能力的人来说,这是一个非常有价值的学习资源。

    Project Euler 第22题

    【标题】"Project Euler 第22题"是一个著名的编程挑战,源自Project Euler网站,这是一个鼓励人们通过编程解决数学和计算问题的在线平台。这道题目通常涉及到字符串处理、排序以及数学计算,旨在锻炼编程者的问题...

    python-project-euler:我在python中解决了Euler项目的问题

    "python-project-euler"显然是一个用户在Python中尝试解答Project Euler问题的项目。 这个项目的重点在于利用Python语言的灵活性和高效性来解决复杂的计算问题。Python是一种高级编程语言,它的语法简洁,易于学习...

    Project-Euler:我使用Python解决的一些Project Euler问题

    在本项目中,作者使用Python语言解答了这些挑战。Python是一种高级编程语言,以其简洁的语法和强大的功能而受到广大程序员的喜爱,特别适合于快速原型开发和解决算法问题。 Python在解决Project Euler问题时的优势...

    project_euler_python:Python中解决Project Euler的问题

    以Python语言来解Project Euler问题。 Project Euler: 针对数学和程式爱好者,设计了一系列的问题,至今已有五百多道,供大家挑战,每一题都要求应在1分钟内计算出答案。我使用硬体Raspberry Pi 2与软体Raspbian,...

    project-euler:projecteuler.net问题的解决方案

    这个压缩包“project-euler-master”很可能是包含了一个使用 Python 解答 Project Euler 问题的代码仓库。以下是关于 Project Euler 和 Python 解决方案的一些关键知识点: 1. **Project Euler 介绍**: - Project...

    project-euler:我的功能性JavaScriptPython方法来回答Project Euler问题

    在解答Project Euler问题时,功能性编程的优势在于: 1. **可读性**:通过将复杂问题分解为一系列简单函数,代码更易理解和维护。 2. **并行处理**:由于纯函数没有副作用,它们可以安全地并行执行,提高性能。 3. ...

    project-euler:Project Euler(http:projecteuler.net)解决难题的方法

    本项目主要关注的是使用Python语言来解答Project Euler的问题。 在探索Project Euler的挑战时,Python成为了一个非常受欢迎的选择,因为它的语法简洁,易于学习,并且拥有强大的库支持,适用于各种计算任务。以下是...

    ProjectEuler:我对Euler项目问题​​的所有解决方案

    【标题】"ProjectEuler:我对Euler项目问题的所有解决方案" 该项目主要包含了对Project Euler问题的解答,这是一个著名的在线数学和计算机科学问题集,旨在挑战编程技能和逻辑思维能力。Project Euler的问题通常...

    Numeracy-Algorithms-projecteuler.net-Solutions-:包含我对projecteuler.net上算法挑战的解决方案

    3. **数据结构**:Python中的列表、元组、字典、集合等数据结构的使用,以及自定义数据结构的实现,如链表、树、图等。 4. **控制流**:如条件语句(if-else)、循环(for, while)和递归在解决问题中的应用。 5. ...

    project-euler:Project Euler ipython notebook 解决方案

    这个压缩包“project-euler-master”似乎包含了一个IPython Notebook的解决方案集,用于解答Project Euler的问题。IPython Notebook(现称为Jupyter Notebook)是一种交互式计算环境,它允许用户结合代码、文本、...

    project-euler-solutions:我想出的所有Project Euler解决方案

    这个名为"project-euler-solutions"的项目,显然是作者为解答Project Euler中的问题而创建的个人解决方案集,主要使用Python语言。 Python作为一门易学且功能强大的编程语言,被广大程序员所喜爱,尤其适合解决这类...

    Project-Euler-Solutions:解决项目Euler问题的Python解决方案

    这个名为"Project-Euler-Solutions"的资源是针对这些问题的Python解答集,由一位热心的程序员创建。下面将详细讨论这个项目中涉及的Python编程知识点。 1. **基础语法和数据类型**: - Python的语法简洁明了,项目...

    Project-Euler

    总的来说,这个压缩包文件可能是一个全面的资源,包含了使用 Python 解决 Project Euler 问题的实践案例,同时也展示了如何利用 Fortran 进行高性能计算。通过学习和研究这些代码,你可以深入理解 Python 语言、算法...

    project_euler

    "project_euler" 是一个专为解决 Project Euler 问题而设计的资源库,它主要使用 Python 编程语言。Project Euler 是一个著名的在线数学和计算机科学挑战平台,它提出了一系列富有挑战性的问题,旨在鼓励学习者应用...

    Euler-Project-With-Python

    【描述】"Euler-Project-With-Python" 描述了这样一个实践过程:用 Python 编程语言去解答欧拉项目中的题目。Python 是一种广泛用于数据分析、机器学习和通用编程的高级编程语言,因其简洁明了的语法而受到程序员...

    Project-Euler-解决方案

    在这个项目中,开发者可能分别使用Scala、C++、Python3和Python2实现了Project Euler的所有问题。每个问题的解决方案可能包括以下部分: - **问题描述**:简述Project Euler问题的具体内容。 - **算法思路**:解释...

    Project-Euler:我对Euler项目网站问题的解决方案的资源库

    在"Project-Euler:我对Euler项目网站问题的解决方案的资源库"中,你将找到作者对于这些问题的解答和思路。 这个资源库可能包含了多种编程语言的实现,例如Python、Java、C++或JavaScript等,每种语言的解决方案都...

    project-euler:项目欧拉解决方案

    在"project-euler-master"这个压缩包中,我们可以推测它包含了一个完整的Project Euler问题解决方案的仓库,很可能是用Python语言编写的。Python因其简洁的语法和强大的库支持,成为了许多Project Euler参与者首选的...

Global site tag (gtag.js) - Google Analytics