【问题标题】:Code is right, but calculate isn't finished代码是对的,但计算没有完成
【发布时间】:2019-11-06 20:31:35
【问题描述】:

我正在尝试从该站点https://projecteuler.net/problem=3 解决问题 3,它的调用如下:''13195 的质因数是 5、7、13 和 29。数字 600851475143 的最大质因数是多少? '' 为什么,当我尝试使用大数字(超过 1000000)运行我的代码时 - 它不会在屏幕上打印?我该如何解决这个问题并解决这个任务?

我有一些正确的工作代码,即使用小输入参数(如 13195)工作。但是,当我尝试使用大参数(如 600851475143)获取答案并运行此代码时,它不会打印任何内容。


def is_it_prime(x): # function check: is it number a prime or not and return True or False?
    if x != 1: 
        i = int(x/2)
    else:
        i = 1 # x == 1 It is a simple case, where is argument - it is a prime number
    while i != 1:
        if x % i == 0: # This number isn't prime
            return False
        i -= 1
    return True # Done! We find largest prime number

def largest_prime(x): # function check argument on whole divide availible
    i = int(x/2)
    while True:
        if x % i == 0: # argument have whole divide
            if is_it_prime(i) == True:
                break
        i -=1
    return i # It is the largest prime factor


print(largest_prime(600851475143))
--------------------------------------------------------

>>>

【问题讨论】:

  • 您是否等待它完成?按照设计,这是一个非常昂贵的计算。除非您使用非常有效的方法,否则这将需要一段时间。把一些prints 放在那里看看发生了什么。
  • 使用更好的素数测试算法。解决项目欧拉问题的基础知识
  • 谢谢。是的,我已经等了一晚来计算这段代码 - 但我没有回答。
  • 感谢所有cmets!我会考虑我的算法并重写这段代码。在此之后,我将返回此页面并为您提供此问题的反向链接。祝你有美好的一天!
  • 为什么我的帖子需要-1票?

标签: python-3.x


【解决方案1】:

**如何判断一个数是否为素数

计算机可以用来测试极大的数字,看看它们是否是素数。但是,由于自然数的大小没有限制,因此即使对于最强大的超级计算机来说,以这种方式进行测试也总是一项艰巨的任务。**

https://whatis.techtarget.com/definition/prime-number

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多