欧拉计划第三题
这是题目:最大质因数
13195的所有质因数为5、7、13和29。
600851475143最大的质因数是多少?
a = 600851475143
b = 0
d = []
f = []
h = 0
for i in range(1,a):
if a%i == 0:
d.append(i)#把a的因数添加到d中
#接下来判断d中的元素是不是质数
for e in d:
for g in range(1,e+1):
if type(e/g) == int:
h = e#当h的值改变则认为d的元素e不是质数
else:
pass
if h == 0:#当h的值没有改变则认为d的元素是a的质因数
f.append(e)
print(max(f))
上面是我写的程序,当a的值小的时候会出来结果,但是如果a的值太大了就会出不来结果,是不是一直在运算?
怎么改更好? 初学者,小白,写的代码有点差,不要嘲笑我{:10_281:}{:10_281:}{:10_281:}{:10_281:} 初学者,小白,写的代码有点差,不要嘲笑我{:10_281:}{:10_281:}{:10_281:}{:10_281:} 本帖最后由 BngThea 于 2017-12-9 09:31 编辑
根据你的思路,对于每一个e,你都应该先将h设为零,而且g应该从2开始判断到e-1 BngThea 发表于 2017-12-9 09:30
根据你的思路,对于每一个e,你都应该先将h设为零,而且g应该从2开始判断到e-1
a = 98765456231
b = 0
d = []
f = []
h = 0
for i in range(1,a):
if a%i == 0:
d.append(i)#把a的因数添加到d中
#加下来判断d中的元素是不是质数
for e in d:
h = 0
for g in range(2,e):
if type(e/g) == int:
h = e#当h的值改变则认为d的元素e不是质数
else:
pass
if h == 0:
f.append(e)
print(max(f))
BngThea 发表于 2017-12-9 09:30
根据你的思路,对于每一个e,你都应该先将h设为零,而且g应该从2开始判断到e-1
还是运行不出来..... py大神 发表于 2017-12-9 20:53
还是运行不出来.....
逻辑是对了,但是算法太糟糕,需要的计算时间太长 BngThea 发表于 2017-12-9 21:36
逻辑是对了,但是算法太糟糕,需要的计算时间太长
我也感觉是这样........ py大神 发表于 2017-12-9 21:47
我也感觉是这样........
对了,e/g肯定是float
你可以试试type(4/2)
页:
[1]