Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Liệt kê các số nguyên tố nhỏ hơn n có tổng bằng S cho trước. Giúp mình tìm lỗi sai

  1. #1
    Ngày gia nhập
    02 2011
    Nơi ở
    hà nội
    Bài viết
    18

    Mặc định Liệt kê các số nguyên tố nhỏ hơn n có tổng bằng S cho trước. Giúp mình tìm lỗi sai

    Mình đã sửa đi sửa lại bài này mà vẫn không chạy được. Các bạn có thể chỉ cho mình lỗi sai không

    C Code:
    1. #include"iostream.h"
    2. #include"math.h"
    3. int i,j;int S;int n;
    4. int songuyento(int k)
    5. { for(i=2;i<=sqrt(k);i++);
    6.   {
    7.     if(k%i==0) return(0);
    8.   }
    9.   return(1);
    10. }
    11. void tongchusonguyento(int n,int S)
    12. { int du=0;int tong=0;
    13.   for(int h=2;h<=n;h++)
    14.   {int t=h;
    15.   while(t>0)
    16.   {
    17.    du=t%10; t=t/10;
    18.    tong=tong+du;
    19.   }
    20.   if((tong==S)&&(songuyento(h)==1)) cout<<h;}
    21. }
    22.  
    23. main()
    24. {
    25.  
    26.  cout<<"Nhap n= "; cin>>n;
    27.  cout<<"Nhap S= ";cin>>S;
    28.  tongchusonguyento(n,S);
    29. }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    02 2010
    Bài viết
    46

    Hàm kiểm tra số nguyên tố của bạn sai rồi.
    I AM HEDSPI STUDENT

  3. #3
    Ngày gia nhập
    05 2008
    Bài viết
    224

    chưa đọc kỹ bài của bạn nhưng bài nà \y thì theo mình phải dùng đệ quy quay lui mới ra, giống như bài tính số tờ tiền để ra đc tổng tiền cho trước ý
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

  4. #4
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    cái đề phải là: Nhập số n và s. Tìm các số nguyên tố nhỏ hơn n và có tổng bằng s chứ nhỉ ?
    @quan_pc: đề này thì rõ chưa >"<

  5. #5
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nôi
    Bài viết
    464

    Đoc code bạn thì suy ra đề bài là thế này:
    TÌm các số nguyên tố <n (hoặc <=n) và cố tổng các chữ số =S
    Lỗi code của bạn như sau

    C Code:
    1. #include"iostream.h"
    2. #include"math.h"
    3. int i,j;int S;int n;
    4. int songuyento(int k)
    5. { for(i=2;i<=sqrt(k);i++);  // Dấu ;  ở đây thừa này
    6.   {
    7.     if(k%i==0) return(0);
    8.   }
    9.   return(1);
    10. }
    11. void tongchusonguyento(int n,int S)
    12. { int du=0;int tong=0;
    13.   for(int h=2;h<=n;h++)
    14.   {int t=h;
    15.   while(t>0) // Trước vòng while này phải gán tong=0
    16.   {
    17.    du=t%10; t=t/10;
    18.    tong=tong+du;
    19.   }
    20.   if((tong==S)&&(songuyento(h)==1)) cout<<h;}
    21. }
    22.  
    23. main()
    24. {
    25.  
    26.  cout<<"Nhap n= "; cin>>n;
    27.  cout<<"Nhap S= ";cin>>S;
    28.  tongchusonguyento(n,S);
    29. }
    Fix theo ý code bạn ( chưa đề cập đến tối ưu )
    C++ Code:
    1. #include "iostream.h"
    2. #include "math.h"
    3. int songuyento(int k)
    4. {
    5.     for(int i=2;i<=sqrt(k);i++)
    6.     {
    7.         if(k%i==0) return(0);
    8.     }
    9.     return(1);
    10. }
    11. void tongchusonguyento(int n,int S)
    12. {
    13.     int du=0,t, tong=0;
    14.     for(int h=2;h<=n;h++)
    15.     {
    16.         t=h;  tong=0;
    17.         while(t>0)
    18.         {
    19.             du=t%10; t=t/10;
    20.             tong=tong+du;
    21.         }
    22.         if((tong==S)&&(songuyento(h)==1)) cout<<h<<endl;
    23.     }
    24. }
    25.  
    26. void main()
    27. {
    28.     int n, S;
    29.     cout<<"Nhap n= "; cin>>n;
    30.     cout<<"Nhap S= ";cin>>S;
    31.     tongchusonguyento(n,S);
    32. }

  6. #6
    Ngày gia nhập
    02 2011
    Nơi ở
    hà nội
    Bài viết
    18

    Mặc định Liệt kê các số nguyên tố nhỏ hơn n có tổng bằng S cho trước. Giúp mình tìm lỗi sai

    @dehin: cảm ơn bạn. t sơ suất cái dấu ";" . còn tong=0 tớ cho ở trên cùng trong hàm số nguyên tố rồi mà. Sao phải gán trước hàm while thì nó mới chạy đúng nhỉ.

    Trích dẫn Nguyên bản được gửi bởi cafelanh Xem bài viết
    chưa đọc kỹ bài của bạn nhưng bài nà \y thì theo mình phải dùng đệ quy quay lui mới ra, giống như bài tính số tờ tiền để ra đc tổng tiền cho trước ý
    Mình mới học C++. đệ quy mình chưa học.


    Trích dẫn Nguyên bản được gửi bởi quan_pc Xem bài viết
    hỏi xem đề bài cụ thể như thế nào rồi mới rõ chứ!.. mình hỏi để làm theo cách khác chứ đâu phải hỏi để làm theo cách này! .. zo zien
    Đề bài mình ghi ở mục topic rồi kìa.

    PS: THANKS ALL
    Đã được chỉnh sửa lần cuối bởi van.duc0409 : 25-02-2011 lúc 08:14 PM.

  7. #7
    Ngày gia nhập
    05 2008
    Bài viết
    224

    nếu tổng chữ số bằng S thì dễ rùi, tổng bằng s mới phức tạp thôi
    Đã được chỉnh sửa lần cuối bởi cafelanh : 25-02-2011 lúc 08:30 PM.
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

  8. #8
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nôi
    Bài viết
    464

    Trích dẫn Nguyên bản được gửi bởi van.duc0409 Xem bài viết
    @dehin: cảm ơn bạn. t sơ suất cái dấu ";" . còn tong=0 tớ cho ở trên cùng trong hàm số nguyên tố rồi mà. Sao phải gán trước hàm while thì nó mới chạy đúng nhỉ.

    Đề bài mình ghi ở mục topic rồi kìa.

    PS: THANKS ALL
    Tiêu đề topic bạn ghi thiếu đó: Chuẩn phải là: Tổng chữ số
    Cái chỗ int tong=0
    Đây là chỉ là khai báo ban đầu thôi.
    Biến tổng là tổng các chữ số của số đang xét.
    Mỗi lần xét với 1 số thì bạn phải gán tong=0
    ( Nếu ko tong vẫn có giá trị lần trc ( =tổng các chữ số của số trc đó)
    Bạn hiểu ko?

    @ chi cafelanh ( nhớ mang máng là chị cũng có nick ở bên boxmath thì phải)
    tổng chữ số = S, hay nhỏ hơn S thì có khác gì mấy
    Code ko có gì liên quan đến đệ quy cả.
    Đây là liệt kê các số thôi mà.
    ( Hình như chị nhầm sang bài kiểu kiểu như liệt kê các dãy số mà tổng các phần từ của dãy= S ( hay nhỏ hơn S). Dùng đệ quy quay lui )

  9. #9
    Ngày gia nhập
    05 2008
    Bài viết
    224

    @ dehin ^^ , đang bận làm việc. đá qua nên viết lộn, theo đề thì là tổng = s thì dungquay lui, còn tổng các chữ số = s thì làm bình thường
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Em có thấy nắng vàng kỷ niệm
    Hạ ngồi ru thanh thản những môi cười
    Thuở ngồi ngóng tay choàng tay nỗi nhớ
    Vin tay vào tháng năm chơi vơi...

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

  1. Lập trình C++ giúp em bài: đặc tả cộng hai số nguyên dương lớn
    Gửi bởi phamhoangphu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 11-04-2012, 01:45 AM
  2. giúp mình tìm lỗi bài tìm số nguyên tố thỏa mãn những điều kiện sau
    Gửi bởi ducvietphan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 05-11-2011, 02:13 PM
  3. bài tập kiểm tra số nguyên tố. Giúp em với?
    Gửi bởi Vaanres trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 12
    Bài viết cuối: 10-10-2009, 08:45 AM
  4. Giúp giùm mình bài phân tích số nguyên dương thành tích thừa số nguyên tố
    Gửi bởi nguyenminhdanh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 30-09-2008, 07:53 PM
  5. Giúp em một số bài về số nguyên tố
    Gửi bởi duc30121989 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 21-04-2008, 08:50 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