Giúp em bài tập Java

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi kinhcan03, 26/8/09.

  1. kinhcan03

    kinhcan03 Mr & Ms Pac-Man

    Tham gia ngày:
    30/12/07
    Bài viết:
    262
    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:-*
     
  2. jkiller295

    jkiller295 T.E.T.Я.I.S

    Tham gia ngày:
    11/8/06
    Bài viết:
    577
    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);
    }
    }
    }
     
  3. bakuryu2

    bakuryu2 Youtube Master Race

    Tham gia ngày:
    11/2/05
    Bài viết:
    29
    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);
    }
    }
    }
     
  4. jkiller295

    jkiller295 T.E.T.Я.I.S

    Tham gia ngày:
    11/8/06
    Bài viết:
    577
    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
     
  5. Alien7

    Alien7 Guest

    Tham gia ngày:
    3/4/08
    Bài viết:
    158
    Tôi nhớ phải là i < j/2+1................
     
  6. bakuryu2

    bakuryu2 Youtube Master Race

    Tham gia ngày:
    11/2/05
    Bài viết:
    29
    :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
     
  7. BurNova

    BurNova Donkey Kong Lão Làng GVN

    Tham gia ngày:
    3/4/07
    Bài viết:
    303
    Nơi ở:
    Hà Lọi
    đúng ra thì j<sqrt(i)+1. Học toán tí là biết được mà.
     

Chia sẻ trang này