01/10/2018, 16:33
Tìm số nguyên tố thứ 10001
em dùng python dể làm projecteuler, em tới vòng 7 rồi, đề bài là tìm số nguyên tố thứ 10 001(10 ngàn lẻ 1), mọi người xem giúp em sai cái gì mà khi chạy nó ra 53 54 55 56 57 58
#problem7
count=1
n=1000
while count < 10002:
for i in range (2,n+1):
if (i%2!=0)and(i%3!=0)and(i%5!=0)and(i%7!=0)and(i%8!=0)and(i%9!=0):
count+=1
if count == 10001:
print(i)
Bài liên quan
Số nguyên tố không chỉ có không chia hết cho các số từ 1->9 đâu bạn.
Bạn xem cách kiểm tra nguyên tố ở đây nhé:
neihousaigaai/diễn đànWiki/blob/master/Algorithm/Math/prime-number/prime-number-algorithm.md
This file has been truncated. show originalVới lại, số nguyên tố thứ 10001 nằm ngoài đoạn [2, 1000] rồi nhé.
Số nguyên tố không chỉ chia hết cho 2,3,5,7 (nắm nguyên tắc số nguyên tố mà làm)
Bạn nên viết riêng 1 method kiểm tra số nguyên tố(vd num):
num <=1 không phải số nguyên tố
num =2 là số nguyên tố
xét các số từ 3 tới căn bậc 2 của num. Có thể dùng vòng lặp for hoặc while với bước nhảy +=2. Vì 2 là số nguyên tố chẵn duy nhất.
Ah sau khi tìm ra rồi thì đo xem tìm hết bao nhiêu thời gian với python nhé. Làm ProjectEuler quan trọng là tối ưu thuật toán sao cho thời gian chạy nhanh nhất.
Mình viết trên C# mất 12ms trên máy win10, core i3 gen 2, ram 4gb
Bạn thử lưu kết quả trước lại xem có nhanh hơn ko??
thuật toán kiểm tra số nguyên tố của bạn sai rồi nhé. Lúc trước Introduction programming with Python, mình cũng giải ProjectEuler bằng python. Tuy lâu nhưng vì mới nhập môn nên thấy cũng hay và có ích. Có bài tận 1 tiếng mới ra kết quả
Bài nào bạn
Mà bài này sàng rất nhanh.