python-3.x - 我应该怎么做才能运行此代码(不更改代码)
问题描述
我正在解决关于 Project Euler (Largest Prime Factor) 的第三个问题,我是 Python 3 的初学者。
这是我想出的解决方案,它可以工作,但不能用于非常大的数字
x=int(input("Enter a number:"))
a=[]
for i in range(1,x+1):
cnt=0
if x%i==0:
for j in range(1,i+1):
if i%j==0:
cnt=cnt+1
if cnt==2:
a.append(i)
print(a[len(a)-1])
我了解它非常基本,并且运行大输入太慢,但是编译器有什么办法可以给我这个输入的输出 - 600851475143。我尝试使用 pypy3,它也花费了太长时间。
这是我第一次使用stackoverflow,所以如果我做错了什么,请告诉我。
解决方案
我知道您说过您不想更改代码,但如果您想有效地解决它,您必须这样做。实际上有一个专门用于此的库,eulerlib
但内置math
模块也可以做到这一点。
如果你想在没有模块的情况下使用 python,你可以试试这个,但对于大数字来说它可能同样慢
def Largest_Prime_Factor(n):
prime_factor = 1
i = 2
while i <= n / i:
if n % i == 0:
prime_factor = i
n /= i
else:
i += 1
prime_factor = max(prime_factor, n)
return prime_factor
内置math
模块也可以做到这一点,而且速度要快得多。由于它是内置的,因此您不需要任何外部库,例如eulerlib
import math
# Getting input from user
n = int(input("Enter the number : "))
maxPrimeFactor = 0
# Checking and converting the number to odd
while n % 2 == 0:
maxPrimeFactor = 2
n = n/2
# Finding and dividing the number by all
# prime factors and replacing maxPrimeFactor
for i in range(3, int(math.sqrt(n)) + 1, 2):
while n % i == 0:
maxPrimeFactor = i
n = n / i
if n > 2:
maxPrimeFactor = n
print("The largest prime Factor of the number is ",int(maxPrimeFactor))
推荐阅读
- c# - WebApi HttpPost 未从 HttpClient 接收发布的内容
- scala - 使用 scala 进程构建器语法错误的 psql \copy 命令
- statistics - 使用`pyhf`浮动信号和背景强度
- php - 如何从 WooCommerce 中的返回 URL 中提取 JSON 密钥以进行身份验证
- kotlin - 如何从 Kotlin 中的匿名 lambda 返回?
- javascript - 开玩笑的模拟函数没有调用模拟的 axios 实例函数(返回未定义)
- openshift - Keycloak WFLYCTL0362:资源所需的功能
- git - 使用 GIT 如何将不同提交中的文件签出到新分支中?
- python - 设置 numpy 时如何解决此错误?
- python - 如何获取页面上所有图像的列表?