เขียนโปรแกรมหาจำนวนเฉพาะ ตั้งแต่ 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จากตัวอย่างโค้ด เราได้สร้าง Scanner เพื่อรับค่าจากคีย์บอร์ด จากนั้นก็สร้าง List เพื่อสำหรับเก็บจำนวนเฉพาะ โดยการแอดเลข 2 เข้าไปก่อน เพราะเลข 2 เป็นจำนวนเฉพาะจำนวนแรก จากนั้นเราก็วนลูปหาจำนวนเฉพาะ ตั้งแต่เลข 2 ถึงเลขที่เรากรอกขึ้น โดยในการหาแต่ละตัวนั้น เราก็จะวนหาตั้งแต่ 2 จนถึงตัวที่ต้องการขณะนั้น แล้วนำมาเช็คว่ามีตัวไหนบ้างที่หารลงตัว แล้วเก็บจำนวนรอบไว้ ถ้ามีรอบการวนเท่ากับตัวที่หาก็บอกได้เลยว่าเป็นจำนวนเฉพาะ แต่ถ้ารอบการหามีค่าไม่ถึงจำนวนที่ต้องการก็สรุปได้ว่าไม่เป็นจำนวนเฉพาะ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() + " ตัว"); } }