Mọi người cho ý kiến để tối ưu code ạ!
Thông thường em sẽ viết hàm chạy từ 2 tới căn(a) nếu a chia hết bất kỳ số nào trong khoảng đó lập tức không phải nguyên tố.
public static boolean binhThuong(long a) {
for (int i = 2; i <= sqrt(a); i++) {
if (a % i == 0) {
return false;
}
}
return true;
}
Mình viết theo thuật toán sàng số nguyên tố như sau:
public static void sangNto(int a) {
a=a+1;
boolean isPrime[] = new boolean[a];
for (int i = 0; i < a; i++) {
isPrime[i] = true;
}
for (int i = 2; i < a; i++) {
if(isPrime[i]){
for (int j = i*i; j <a; j+=i) {
isPrime[j] = false;
}
}
}
for (int i = 2; i <a; i++) {
if(isPrime[i]){
System.out.println(i);
}
}
}