Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 12 kết quả

Đề tài: Nghĩ được sao làm không được

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    9

    Wink Nghĩ được sao làm không được

    em muốn in các số nguyên tố trong khoảng [a,b] sao làm không được
    + em cho i chạy từ a đến b
    + trong khi i=a, em cho j chạy từ 2 đến a-1 và kiểm tra i%j==0 hay không
    + nếu đúng thì i không phải là số nguyên tố
    nghĩ vậy nhưng sao làm không được

  2. #2
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Example:
    PHP Code:
    for(int i=a;i<=b;i++)
    {
        
    int ok=1;
        for(
    int j=2;j<=i/2;j++)
            if(!
    i%j
            {
                
    ok=0;
                break;
            }
        if(
    okprintf("%d",i);


  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Ý tưởng bạn như thế là sai rồi. Ví dụ như tìm số nguyên tố từ 4->8 thì theo cách đó 4,5,6,7 đều là số nguyên tố. Bạn phải viết hàm kiểm tra số nguyên tố và kiểm tra trên từng số.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    No Avatar
    satthu Khách

    Bạn trubavuong cần chỉnh lại code như thế này là đảm bảo chạy vô tư:

    Code:
    for(int i=a;i<=b;i++)
    {
        int ok=1;
        for(int j=2;j<=i/2;j++)
            if(i%j==0) 
            {
                ok=0;
                break;
            }
        if(ok) printf("%d",i);
    }

  5. #5
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Ý tưởng bạn như thế là sai rồi. Ví dụ như tìm số nguyên tố từ 4->8 thì theo cách đó 4,5,6,7 đều là số nguyên tố. Bạn phải viết hàm kiểm tra số nguyên tố và kiểm tra trên từng số.
    Sorry, vì gõ code nhanh quá lại không chạy thử, nên viết thiếu chút chứ không sai về thuật toán.
    PHP Code:
    for(int i=a;i<=b;i++)
    {
        
    int ok=1;
        for(
    int j=2;j<=i/2;j++)
            if(!(
    i%j)) ////// Thiếu ngoặc //////
            
    {
                
    ok=0;
                break;
            }
        if(
    okprintf("%d",i);


  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Nghĩ được sao làm không được

    Trích dẫn Nguyên bản được gửi bởi trubavuong Xem bài viết
    Sorry, vì gõ code nhanh quá lại không chạy thử, nên viết thiếu chút chứ không sai về thuật toán.
    Ke ke, mình nói chủ topic đó chứ.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Sao lại sai, mình thấy đúng đó chứ ?

  8. #8
    Ngày gia nhập
    12 2008
    Bài viết
    20

    Mình thấy Bethaophuong có ý tưởng đúng mà. Nhưng bạn cần phải xét riêng trường hợp a=2. vi như bạn nói a%j=0(vi bạn cho j chạy tư 2 ma) thì 2 không là nguyên tố ah?
    Đúng chưa nào.

  9. #9
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Không hẳn thế. Nếu như bạn viết code như của mình ở trên thì 2 vẫn là số nguyên tố như thường. Bởi lẽ đúng là vòng lặp đó được gọi nhưng không chạy được vì kiểm tra điều kiện sai. Do đó 2 vẫn là số nguyên tố.

  10. #10
    Ngày gia nhập
    09 2008
    Bài viết
    18

    làm như trên bạn satthu mình thấy là đc roài. chỉ xét thêm trường hợp 1 và 2 thôi (tách nó ra!)
    mình thấy các bạn nên chỉ cần cho chạy từ 2 -> sqrt(i) là đc roài.
    Code:
    for(int j=2;j<=sqrt(i);j++)
    cái đó sẽ nhanh hơn rất nhiều đó!
    --------------------------------------

Các đề tài tương tự

  1. Liên thông trung cấp nghề,cao đẳng nghề lên đại học chính quy 2012
    Gửi bởi cafetrungnguyen trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 31-07-2012, 02:03 PM
  2. Trả lời: 0
    Bài viết cuối: 02-08-2011, 03:26 PM
  3. Nhập ký tự đầu tiên của một nghề sẽ xuất ra nghề đó bằng việc sử dụng enum?
    Gửi bởi sasadudu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-03-2011, 09:25 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn