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); } } }
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
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