python - 我做了这个素数计算器,它工作得很好,但对于大数字来说可以持续很长时间。我能做些什么来让它变得更好?(Python)
问题描述
#Prime factor calculator
num = int(input("Give me a number: "))
sqrt = int((num**(1/2))//1)
primfact = []
for i in range (1,sqrt+1): #This block wont work if num < 10.
isqrt = int((i**(1/2))//1)
for k in range (1,isqrt+1):
if i % k != 0:
if num % i == 0:
num = num / i
primfact.append(i)
if len(primfact) == 0: #Solves it for small num.
for j in range (1,num+1):
if num % j == 0:
num = num / j
primfact.append(j)
print("Prime factors for your number: ",primfact)
第一个块不适用于小 num(例如 num = 9),这就是我添加另一个 if 循环的原因。第一个块适用于大数字,但需要几分钟。
解决方案
推荐阅读
- amazon-web-services - How to create subnets with even distribution of IP addresses?
- go - golang-grpc service - import types from another file
- node.js - Bot Framework Getting 502 Bad Gateway Errors in Production Environment after the Bot is not Requested for around 10 Minutes (Node.js)
- c++ - 在c ++中使用向量在数组的第一个索引处缺少第一个字母
- c++ - c++ operator overloading = not working well in visual studio yet works in eclipse CDT
- javascript - 按当前时间戳每分钟更新 node.js express api
- node.js - 如何使用 firestore 和 express.js 创建 onSnapshot 监听器
- json - How do I make a post request of a json nested in flutter?
- amazon-web-services - Unable to configure Parse Server on AWS
- javascript - How to dynamically build a geoJSON with the results of an API call in javascript