Tôi chỉ mới bắt đầu học cách viết mã bằng Python. Tôi cố gắng để viết một số mã để trả lời câu này Câu hỏi Dự án Euler:Python "OverflowError"
Các thừa số nguyên tố của 13.195 là 5, 7, 13 và 29.
các thừa số nguyên tố lớn nhất trong số 600.851.475.143 là gì?
Chương trình của tôi hoạt động với trường hợp thử nghiệm là 13195, nhưng khi tôi cố gắng nhập 600851475143, tôi nhận được lỗi: "Kết quả OverflowError: range() có quá nhiều mục" Có ai biết cách khắc phục sự cố này không?
Đây là mã của tôi:
class Euler3:
"A class to find the largest prime factor of a given number"
n = 600851475143
primeFactors = []
for i in range(2,n):
if (n%i ==0):
primeFactors.append(i)
n = n/i
i = i -1 #reset i
print primeFactors
Bất kỳ trợ giúp hoặc đề xuất sẽ được nhiều đánh giá cao!
Bạn đang làm sai. Đối với mỗi thừa số 'x', có một yếu tố khác' y' sao cho 'x * y = num'. Nếu 'x' trong hệ số nhỏ nhất thứ n,' y' sẽ là yếu tố lớn thứ n (chứng minh đây là một bài tập được để lại cho người đọc). Tìm yếu tố nhỏ nhất 'x' và thực hiện' y = num/x'. Nếu 'y' là số nguyên tố, đó là số của bạn, nếu không, cứ tiếp tục. Ngoài ra, 'x' nhỏ hơn' sqrt (num) ', vì vậy bạn có thể thu nhỏ' dải ô() 'khá nhiều. – WhyNotHugo