Project Euler Problem #7

จำนวนเฉพาะ (Prime Number) 6 ตัวแรก คือ 2, 3, 5, 7, 11 และ 13 จะเห็นได้ว่า จำนวนเฉพาะ ลำดับที่ 6 คือ 13

จำนวนเฉพาะ ลำดับที่ 10,001 คืออะไร

(โจทย์นี้แปลมาจาก projecteuler.net สามารถเผยแพร่ภายใต้ลิขสิทธิ์ CC BY-NC-SA 2.0 UK )

1 Likes

ของเซฟครับ


Rain’s answer for #7

@STGSafe
ชัดเจน: 1/3 สร้างสรรค์: 2/3 กระชับ 1/3 ความเร็ว 2/3
Comment: ใช้ for loop ไม่น่าเหมาะสมครับ เพราะเราไม่รู้ว่ามันจะไปถึง 10000000 การใช้ while lop เหมาะกว่า อีกอย่าง เวลามีเลขใหญ่ๆแบบนี้ ใช้ * ดีกว่าแล้วใส่ในตัวแปรตัวเดียวเลยครับ เช่น final int LIMIT = 10 * 1000 * 1000;

@Rain
ชัดเจน: 2/3 สร้างสรรค์: 2/3 กระชับ 2/3 ความเร็ว 1/3
Comment: ช้าเพราะการ output ออกหน้าจอช้าครับ ถ้าตัด print ออกไปจาก loop คงจะเร็วกว่านี้เยอะ

@IMPREM
ชัดเจน: 2/3 สร้างสรรค์: 3/3 กระชับ 2/3 ความเร็ว 3/3
Comment: ชอบ algorithm ครับ เร็วมาก!

@prin09
ชัดเจน: 2/3 สร้างสรรค์: 1/3 กระชับ 2/3 ความเร็ว 1/3
Comment: ตรงไปตรงมาดีครับ ตอนจะหา prime number ถ้าใช้ square root จะดีกว่า ÷ 2 ครับ และตอนตรวจ factor แทนที่จะ +1 เรา +2 ได้ เพราะบรรดาเลขคู่ไม่ต้องเช็คอยู่แล้ว แบบนี้จะเร็วขึ้นมาได้อีก แต่ C# โดยรวมเร็วแบบน่าตกใจอยู่แล้วครับ :stuck_out_tongue:

1 Likes

คล้ายๆ กับของ @IMPREM เพราะเรียนรู้เเล้วค่อยมาลองทำดู