当前位置: 首页 > 知识库问答 >
问题:

永远需要:Project Euler Problem 3 Python

卢俭
2023-03-14

我是初学者。下面我对欧拉项目3号问题的解决方案需要很长时间才能返回答案。有人能提出改进建议吗?我做错了什么?我写了一些代码来帮助我思考这个问题的所有难题。

13195的质因数是5、7、13、29。

600851475143的最大质因数是什么?

#limiter identification for iteration

def limiter(x):
    for i in range (2, x):
        if x % i == 0:
            return int (x/i)

#Prime checker 
            
def is_prime(a):
    for i in range (2, a):
        if a % i == 0:
            return False
    return True
#Lists all factors of a given no.

def factorlist(b):
    list = []
    for i in range (2, limiter(b)+1):
        if b % i == 0:
            list.append(i)
    return list

#Lists all prime factors of a given no.

def primefactor(p):
    plist = []
    for i in factorlist(p):
        if is_prime(i)== True:
            plist.append(i)
            
    return plist
    
print (primefactor(600851475143)[-1])

共有3个答案

蒲深
2023-03-14

下面是更简单、更短的代码:

# Largest Prime Factor

def prime_number(b):
    c1 = 0
    for i in range(1,int(b/2)+1):
        if b % i == 0:
            c1 += 1
    if c1 < 2:
        return(True)
    else:
        return(False)

def prime_factor(a):
    n = 0
    count = 1
    prime = 0
    while n < a+1:
        n += 1
        if a % n == 0:
            if prime_number(n) == True:
                prime = n
                print(prime)
prime_factor(600851475143)
赏阳嘉
2023-03-14

寻找最大素因子的递归方法将更简单,可能更快:

def lpf(N,p=2):                               # start from preceding prime factor
    for f in range(p,int(N**0.5)+1):          # factors up to square root
        if N%f==0 : return max(f,lpf(N//f,f)) # 1st prime vs lpf of counterpart
    return N # none found, N is prime itself

lpf(600851475143) # 6857
韦熙云
2023-03-14

我没有答案,但我要说的是,有时函数中的print()语句对于在函数中调试很有用。例如,limitor()函数挂起在71。我发现在我的机器上运行你的程序:

def limiter(x):
for i in range (2, x):
    print(i) <------------------ I added this
    if x % i == 0:
        return int (x/i)

因此,在函数中添加print()可能会有所帮助。

 类似资料:
  • 我是pycharm的新用户,我很难运行一个简单的文件来导入熊猫。我有以下问题: 每当我打开项目时,“扫描文件到索引”都需要很长时间。 我可以看到在索引中,它使用了Anaconda2中的包/文件,这就是为什么我的程序需要很长时间才能运行。 我已经尝试使某些文件夹“排除”,如此处所述 PyCharm 4.0.5 挂在“扫描文件以索引”后台任务上,我还删除了此处所述的“缓存”文件夹 Intelli J

  • 我有一个由未加权边构建的图(a),我想计算主图(a)中最大连通图(giantC)的平均最短路径长度。但是,到目前为止,该脚本已经运行了3个多小时(在Colab和本地进行了尝试),对于和都没有输出任何结果。 我使用的是, 这是我的剧本 有没有办法让它更快?或者是计算giantC图的直径和最短路径长度的替代方法?

  • 我正在将一个拼花文件从DataFrame写入S3。当我查看Spark UI时,我可以看到除1项任务外的所有任务都在写作阶段迅速完成(例如199/200)。这最后一个任务似乎要花很长时间才能完成,而且常常由于超出执行器内存限制而失败。 我想知道最后一个任务发生了什么。如何优化它?谢谢。

  • 我正在为自己清除一些涉及到MYSQL的远程SSL连接的信息。特别是,一旦我设置了MYSQL以启用SSL并有一个需要SSL的远程用户。 这就是我如何与需要SSL的用户远程连接(命令行)到MYSQL的方式: mysql-uMyUserName-p-h192.168.5.5-sslca/path/to/ca.pem 我的问题是:为什么我必须作为客户端提供ca.pem文件? 以下是我在服务器上安装mysq

  • 问题内容: 有没有让goroutine永远睡眠的API ? 换句话说,我希望我的项目始终运行,除非停止它。 问题答案: “睡眠” 您可以使用许多永久阻塞的构造,而不会“吃掉” CPU。 例如,不带任何(且不带)的a: 或从没有人发送任何东西的渠道接收: 或从频道接收也会永远阻止: 或在频道上发送也会永远被阻止: 或锁定已经锁定的: 戒烟 如果您确实想提供一种退出方法,则可以通过一个简单的渠道来完成

  • 问题内容: 有什么办法可以使这两个软件包一起运行? 因此,基本上,我希望两全其美。自动运行服务器(并在出现错误时重新启动),并在发生.js文件更改时自动更新。 问题答案: 但是要避免该问题,您可以执行以下操作: 这样可以确保实际退出(而不是给您“应用程序崩溃”消息),然后再次将其接收。 在此指定要运行的命令,否则将默认为节点。不使用-c会导致在此答案的注释中提及的错误。