当前位置: 首页 > 面试题库 >

卡在python项目Euler#3上

邹禄
2023-03-14
问题内容

13195的素数是5、7、13和29。600851475143的最大素数是多少?

好的,所以我正在研究python中的项目Euler问题3。我有点困惑。我无法确定我通过该程序获得的答案是否正确。如果有人能告诉我即时消息做错了,那太好了!

#import pdb

odd_list=[]
prime_list=[2] #Begin with zero so that we can pop later without errors.

#Define a function that finds all the odd numbers in the range of a number
def oddNumbers(x):

  x+=1 #add one to the number because range does not include it
  for i in range(x):
     if i%2!=0: #If it cannot be evenly divided by two it is eliminated
        odd_list.append(i) #Add it too the list

  return odd_list

def findPrimes(number_to_test, list_of_odd_numbers_in_tested_number): # Pass in the prime number to test
   for i in list_of_odd_numbers_in_tested_number:
     if number_to_test % i==0:
       prime_list.append(i)
       number_to_test=number_to_test / i

       #prime_list.append(i)
       #prime_list.pop(-2) #remove the old number so that we only have the biggest

       if prime_list==[1]:
           print "This has no prime factors other than 1"
       else:
           print prime_list
       return prime_list

    #pdb.set_trace()

    number_to_test=raw_input("What number would you like to find the greatest prime of?\n:")

    #Convert the input to an integer
    number_to_test=int(number_to_test)

    #Pass the number to the oddnumbers function
    odds=oddNumbers(number_to_test)

#Pass the return of the oddnumbers function to the findPrimes function
findPrimes(number_to_test , odds)

问题答案:
  • 这个数字600851475143很大,不鼓励您使用蛮力。
  • oddNumbers在打算把功能600851475143 / 2号码odd_list,这是 一个很大 的内存。
  • 检查数字是否可以除以奇数并不意味着该奇数是质数。您提供的算法有误。
  • 关于质数,有很多数学/算法技巧,您应该在线搜索并 筛选 答案。您可能还会找到问题 的根源 ,以确保已解决 一些问题。

您可以使用生成器来获取赔率列表(并非对您有帮助):

odd_list = xrange(1, number+1, 2)

以下是处理质数所需的概念:

  • http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
  • http://en.wikipedia.org/wiki/Primality_test

如果您 真的 被卡住了,那么已经有解决方案了:

  • 项目Euler#3,因式分解的无限循环
  • 欧拉计画3-这种方法为何有效?
  • 欧拉项目问题3帮助


 类似资料:
  • 问题: 13195的质因数是5、7、13、29。 数字600851475143中最大的素因子是什么? 我发现这个很简单,但运行这个文件花了很长时间,已经运行了一段时间,我得到的最高数字是716151937。 这是我的代码,我只是要等待还是我的代码中有错误? }

  • 问题内容: 欧拉计画的问题3是: 13195的主要因子是5、7、13和29。 600851475143的最大素数是多少? 我的解决方案需要永远。我认为我得到了正确的实施;但是,在进行大量测试时,我无法看到结果。它永远运行。我想知道我的算法是否有问题: 问题答案: 尽管不是Java语言,但我认为您可以做到以下几点。基本上,只需要测试奇数除数就可以减少迭代次数,并且最多可以减少数字的平方根。这是一种蛮

  • 我试图解决欧拉三号工程,但我对停止计算的逻辑相当混乱。 以下是第三个Euler项目: 13195的质因数是5、7、13、29。 600851475143的最大质因数是什么? 我创建了一个函数来检查数字是否为素数: 以及一个函数,用于检查质数是否是该数的一个因子: 唯一的问题是主函数,我正在尝试这样的操作: 我知道逻辑不正确,但我真的坚持了一个多小时。 我知道这里的主要目标是循环,找到一个素数并检查

  • 问题内容: 该代码应该返回最大的质数。有关此任务的更多信息:https : //projecteuler.net/problem=3 我决定将checkFactors()的参数加倍,因为我试图测试为什么我的代码无法正常工作。 工作并返回“ 29”。 但是, 不起作用, “ int类型的600851475143超出范围”。 确实可以编译,但是在几秒钟后给了我ArithmeticException。

  • 我的代码: 输出:

  • 我正在尝试解决Euler项目中的问题3: 13195的质因数是5、7、13、29。 600851475143的最大质因数是什么? 这是我的代码: 代码没有输出任何东西,它只是给了我一个空白屏幕。请不要帮我解决这个问题,告诉我是什么bug阻止了它输出任何东西。