• [THÔNG BÁO] CẢNH BÁO LỪA ĐẢO MẠO DANH QUẢN TRỊ VIÊN
    Chào các thành viên GameVN,
    Dạo gần đây tình trạng lừa đảo scamming và phishing đang gia tăng. Ban quản trị GameVN xin lưu ý toàn bộ thành viên:
    KHÔNG/ ĐỪNG / CẤM cho bất kỳ ai tự xưng là quản trị viên của server vay tiền.
    Mọi hành vi lân la làm quen, tự tiện nhắn tin trên Discord, Facebook, Zalo hoặc các nền tảng mạng xã hội khác,
    núp bóng dưới danh nghĩa sinh hoạt của quản trị viên, đều có tỉ lệ rất, rất cao là lừa đảo.
    Nếu có tài khoản lạ add friend hoặc nhắn tin xin tiền dưới danh nghĩa admin:
    Block ngay
    Report ngay
    Không chuyển khoản, không cung cấp thông tin cá nhân


    Quản trị viên của forum và Discord server GameVN không có nhu cầu vay tiền thành viên.
    Không có lý do nào để admin chủ động kết bạn rồi xin tiền.
    Mọi thông báo chính thức chỉ được đăng trên kênh thông báo của server và topic chính thức trên forum.
    Tin nhắn riêng từ tài khoản lạ không phải thông báo của ban quản trị.
    Cảm ơn các bạn đã chú ý và cùng giữ cộng đồng an toàn.
    — Ban quản trị GameVN

    Tắt thông báo bằng nút X bên góc phải của bảng thông báo*

Giúp em bài tập Java

kinhcan03

Mr & Ms Pac-Man
Tham gia ngày
30/12/07
Bài viết
262
Reaction score
0
Em mới học mấy cái căn bản như boolean, cast, if, for với modulus, thôi mà ông thầy cho 1 bài kêu là viết 1 program để cho nó hiện các số nguyên tố (prime number) lên. Anh chị nào biết ra tay giúp em với. + hay - rep sẽ làm theo yêu cầu:-*
 
public class Prime // tạo public class
{
public static void main(String []args) // tạo 1 method main
{
int i,j;
boolean isprime;

for(i=2; i<100; i++) // tạo loop tự đếm từ 2 tới 100
{
isprime = true;

for (j=2; j<i; j++)// Tự in giá trị của (j) từ 2-100 và điều kiện nhỏ hơn giá trị của (i)
if (i % j == 0) isprime =false; // Loại bỏ giá trị của (i) nếu nó chia hết cho 1 số nhỏ hơn
if(isprime) // chỉ chọn giá trị đúng còn lại
System.out.println(i);
}
}
}
 
public class Prime // tạo public class
{
public static void main(String []args) // tạo 1 method main
{
int i,j;
boolean isprime;

for(i=2; i<100; i++) // tạo loop tự đếm từ 2 tới 100
{
isprime = true;

for (j=2; j<i; j++)// Tự in giá trị của (j) từ 2-100 và điều kiện nhỏ hơn giá trị của (i)
if (i % j == 0) isprime =false; // Loại bỏ giá trị của (i) nếu nó chia hết cho 1 số nhỏ hơn
if(isprime) // chỉ chọn giá trị đúng còn lại
System.out.println(i);
}
}
}

bài nè được điểm nhưng sẽ tốn tài nguyên hệ thống. viết các chương trình nhỏ thì ok. viết các chương trình lớn sẽ bị trừ điểm.
nên thêm dk isprime vào dk của vòng lặp phía trong. nó sẽ làm giảm bớt vòng lặp. thêm nữa chỉ cần check đến j<i/2 không cần check đến j<i
vậy ta được đáp án sau

public class Prime // tạo public class
{
public static void main(String []args) // tạo 1 method main
{
int i,j;
boolean isprime;

for(i=2; i<100; i++) // tạo loop tự đếm từ 2 tới 100
{
isprime = true;
//với i=2 isprime la true. và vòng for không thực hiện do 2>2/2 vậy nên 2 vẫn là số nguyên tố
for (j=2; j<i/2 && isprime; j++)// Tự in giá trị của (j) từ 2-100 và điều kiện nhỏ hơn giá trị của (i)
if (i % j == 0) isprime =false; // Loại bỏ giá trị của (i) nếu nó chia hết cho 1 số nhỏ hơn
if(isprime) // chỉ chọn giá trị đúng còn lại
System.out.println(i);
}
}
}
 
Nếu làm j<i/2 thì 4 sẽ được hiện thị
Mã:
2
3
4
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
 
Tôi nhớ phải là i < j/2+1................
 
:D lâu rùi không xem lại máy cái nè nên không nhớ lắm :">
nếu học về mảng rùi thì làm đơn giản và nhẹ nhàng hơn nhiều.
trong mảng đầu tiên chỉ có 2. mỗi khi gặp một số nguyên tố thì cho số đó vào mảng.
lấy giá trị cần kiểm tra chia cho từng phần tử trong mảng. nếu không chia hết cho các phần tử trong mảng thì sẽ là số nguyên tố.
còn bài trước thì đúng là j<=i/2 hay i<j/2+1 thiệt :D
 
đúng ra thì j<sqrt(i)+1. Học toán tí là biết được mà.
 
Back
Top