เขียนโปรแกรมหาจำนวนเฉพาะ ตั้งแต่ 1-N ว่ามีกี่ตัว

เขียนโปรแกรมหาจำนวนเฉพาะ ตั้งแต่ 1-N ว่ามีกี่ตัว

วันนี้เรามาเขียนโปรแกรม เพื่อหาจำนวนเฉพาะกันครับ ซึ่งโจทย์ก็คือ ให้หาว่าจำนวนเต็มตั้งแต่ 1 ถึง N มีจำนวนเฉพาะกี่ตัว และมีอะไรบ้าง

ตัวอย่างโค้ดที่ได้เขียนขึ้น
 import java.util.ArrayList; import java.util.List; import java.util.Scanner;  public class PrimeNumber {     public static void main(String[] args) {         int maxnum;         while(true){             try{                 System.out.print("Insert Prime Number : ");                 Scanner in = new Scanner(System.in); // สร้างตัวแปร Scanner                 maxnum = in.nextInt(); //รับค่า N เข้ามาทางแป้นพิมพ์                 if(maxnum > 1) { // ตรวจสอบว่ามากกว่า 1 หรือเปล่า                     break;                 }             }             catch(Exception e){}         }         List ListPrime = new ArrayList<>(); //สร้าง List เพื่อเก็บจำนวนเฉพาะ         ListPrime.add(2); //เพิ่มเลข 2 เข้าไปเพราะเป็นจำนวนเฉพาะตัวแรก         int state = 0;         for (int i = 2; i < maxnum; i++) { //วนลูปตั้งแต่ 2-N เพื่อหาจำนวนเฉพาะ             if(i%2 == 0) {                 continue;             }             for (int j = 2; j < i; j++) { //วนลูปเพื่อหาว่าหารลงตัวหรือป่าว                 state = j;                 if(i%j == 0) { //ถ้าหารลงตัวให้หยุดลูป                     break;                 }             }             if(state == i-1) { //เช็คค่าที่ได้จากลูปว่าลนทุกตัวหรือป่าว ถ้าวนทุกตัวก็เป็นจำนวนเฉพาะ ถ้าวนไม่ครบก็ไม่เป็น                 ListPrime.add(i);             }         }         System.out.println(ListPrime.toString());         System.out.println(ListPrime.size() + " ตัว");     } } 
จากตัวอย่างโค้ด เราได้สร้าง Scanner เพื่อรับค่าจากคีย์บอร์ด จากนั้นก็สร้าง List เพื่อสำหรับเก็บจำนวนเฉพาะ โดยการแอดเลข 2 เข้าไปก่อน เพราะเลข 2 เป็นจำนวนเฉพาะจำนวนแรก จากนั้นเราก็วนลูปหาจำนวนเฉพาะ ตั้งแต่เลข 2 ถึงเลขที่เรากรอกขึ้น โดยในการหาแต่ละตัวนั้น เราก็จะวนหาตั้งแต่ 2 จนถึงตัวที่ต้องการขณะนั้น แล้วนำมาเช็คว่ามีตัวไหนบ้างที่หารลงตัว แล้วเก็บจำนวนรอบไว้ ถ้ามีรอบการวนเท่ากับตัวที่หาก็บอกได้เลยว่าเป็นจำนวนเฉพาะ แต่ถ้ารอบการหามีค่าไม่ถึงจำนวนที่ต้องการก็สรุปได้ว่าไม่เป็นจำนวนเฉพาะ