Tuesday, June 25, 2019

Viết chương trình kiểm tra số nguyên tố trong java

Lập trình java hôm nay sẽ giới thiệu cho các bạn về một bài toán kiểm tra số nguyên tố trong java, để làm được yêu cầu của bài toán này mọi người cần phải phân tích kỹ lượng về đầu vào và đầu ra của bài toán, quan trong là thuật toán kiểm tra số nguyên tố.

Viết chương trình kiểm tra số nguyên tố trong java

Thế nào là số nguyên tố.

Số nguyên tố là một số ước của nó chỉ chia hêt cho 1 và chính nó ví dụ như : 2,3,5,7,11,13,17.....
Có nhiều cách để suy luận bài toán thật đơn giản nhưng để làm được điều đó các bạn phải thực hành và đưa ra nhiều biện pháp để xử lý, nói chung luyện tập, khi xây dựng chương trình bạn phải nắm bắt được những điều sau:
  •  Kết quả đúng
  • chương trình chạy nhanh nhất
  • code dễ hiểu
  • giảm thiểu bộ nhớ
Xử lý bài toán
Đầu vào của bài toán:
Nhập vào số nguyên dương n
Đầu ra của bài toán:
Kiểm tra số nguyên đó có phải là số nguyên tố không? 
Thuật toán kiểm tra số nguyên tố
 Dùng một vòng lập thực hiện đến sqrt(n) sau đó thực hiện n%i
 Nếu n%i==0 return false hoặc return true;
Code chương trình, sau đây là hàm kiểm tra số nguyên tố.
boolean checkNguyenTo(int n){
if(n<=2){
return true;
}else {
for(int i =2;i<=Math.sqrt(n);i++){
if(n % i == 0)
return false;
}
}
return true;
}
Giải thích:
       Như thuật toán mình đã trình bày các bạn thực hiện vòng lặp, ở đây mình dùng vòng lặp for để thực hiện cho i chạy đên sqrt(n).
Thực hiện kiểm tra n%i
Câu hỏi .

       1. Tại sao chỉ thực hiện đến sqrt(n).
2. Tại sao không thực hiện lệnh else (n%i !=0)

Toàn bộ code chương trình kiểm tra số nguyên tố của n nguyên dương.
 import java.util.Scanner;
 public class SoNguyenTo {
boolean kiemtranguyento(int n){
for(int i =2; i<=Math.sqrt(n);i++){
if(n%i == 0){
return false;
}
}
return true;
}
public static void main(String args[]){
Scanner s = new Scanner(System.in);
System.out.printf("Kiem tra so nguyen to \n");
System.out.printf("Nhap vao so nguyen duong \n");
int n = s.nextInt();
SoNguyenTo snt = new SoNguyenTo();
if(snt.kiemtranguyento(n)){
System.out.printf("So : " +n +" la so nguyen to");
}else{
System.out.printf("So : " +n +" khong phai la so nguyen to");
}
}
Chúc các học tốt và thi tốt !.

No comments:

Post a Comment