Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: cần sự trợ giúp về bài toán số hoàn hảo

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

    Smile cần sự trợ giúp về bài toán số hoàn hảo

    C++ Code:
    1. int j,tong=1,s;
    2.    printf("\n \t CHUONG TRINH TM SO HOAN HAO :");
    3.    printf("\n Moi ban nhap mot so :");
    4.    scanf("%d",&s);
    5.    for(h=2;h<=s;h++)
    6.    {    for(j=2;j<=h/2;j++)
    7.         if(h%j==0)
    8.             tong+=j;
    9.          if(tong==h)
    10.             printf("\n %d",h);
    11.       }
    giả sử cho s=7 thì vòng lặp thứ nhất h<=s(2<=7) thì thưc hiện tiếp j=2 kiểm tra (2<=1(sai)) rui nó lại về vòng lặp thứ nhất tăng biến đếm h=3 <7
    rui thực hiện tiếp j=2 kiẻm tra (2<=3/2 sai) .Tiếp tuc tăng vòng lặp thứ ba h=4<=7,vòng lặp j=2<=7/4 sai .Tiếp quay lại vòng lặp tăng h=5 ,vòng lặp j=2<=7/5 sai cứ như vậy kiểm tra vòng lặp j luôn sai thì làm sao mà kiểm tra được điều kiện dưới được tóm lại là mình không hiểu j<=h/2 thì mong các bạn giải thích giúp
    Đã được chỉnh sửa lần cuối bởi rox_rook : 24-09-2008 lúc 03:04 AM.

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Với bài này bạn nên sử dụng hàm cho sáng sủa, rõ ràng.
    Code:
    #include <iostream.h>
    
    int Check(int s);
    
    int main()
    {
    	int s;
    	cout<< "Enter an integer number n = ";
    	cin>> s;
    	for (int i=2;i<=s;i++)
    		if (Check(i)) cout<<"   "<<i;
    }
    
    int Check(int s)
    {
    	int n=1;
    	for (int i=2;i<=s/2;i++)
    		if (s%i==0) n+=i;
    	if (s==n) return 1;
    	return 0;
    }

  3. #3
    Ngày gia nhập
    03 2007
    Bài viết
    179

    Trích dẫn Nguyên bản được gửi bởi namth90 Xem bài viết
    Tiếp quay lại vòng lặp tăng h=5 ,vòng lặp j=2<=7/5 sai cứ như vậy kiểm tra vòng lặp j luôn sai thì làm sao mà kiểm tra được điều kiện dưới được tóm lại là mình không hiểu j<=h/2 thì mong các bạn giải thích giúp
    h/2 chứ không phải h/s . nên nó đâu lệ thuộc mà bạn bảo

  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    giả sử cho s=7 thì vòng lặp thứ nhất h<=s(2<=7) thì thưc hiện tiếp j=2 kiểm tra (2<=1(sai)) rui nó lại về vòng lặp thứ nhất tăng biến đếm h=3 <7
    rui thực hiện tiếp j=2 kiẻm tra (2<=3/2 sai) .Tiếp tuc tăng vòng lặp thứ ba h=4<=7,vòng lặp j=2<=7/4 sai .Tiếp quay lại vòng lặp tăng h=5 ,vòng lặp j=2<=7/5 sai cứ như vậy kiểm tra vòng lặp j luôn sai thì làm sao mà kiểm tra được điều kiện dưới được tóm lại là mình không hiểu j<=h/2 thì mong các bạn giải thích giúp
    Hi! Tui thấy bạn kiên trì thử h từ 2 đến 5, rồi kết luận nó cứ sai mãi ^^. Bạn thử h=6 xem:

    - NX: Ở đây 6 là số hoàn hảo 6=1+2+3, OK

    - Chúng ta bắt đầu thử xem kết quả có như nhận xét trên không nhé. s=7, h=6 => h/2=3; vòng lặp for ở trong sẽ chay 2 vòng với j lần lượt là 2,3 cả 2 giá trị này đều thoả mãn điều kiện h%j=0 vậy tổng sẽ là tong=1+2+3=6, OK t/m. 6 là một số hoàn hảo.

    *Mình có một câu như này một nói với bạn, khi xong một chương trình, ta cho các vd để chạy thử test kết quả, thì không nên chỉ dùng một chuỗi các giá trị bình thường để test mà nên test hết cả các giá trị đặc biết, hết cả các loại giá trị theo tất cả các hướng kết quả trả về.

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

  1. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  2. Mới nhập môn khó quá , cần trợ giúp [Vấn đề của bạn cần muốn giúp là gì ?]
    Gửi bởi cuingo212 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 22-10-2011, 08:43 AM
  3. Chương trình giúp một học sinh cấp 1 học phép nhân, xử lý hàm rand, giúp mình với?
    Gửi bởi chankx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 12-05-2009, 08:52 PM
  4. Code giúp add một key vào registry, ai giúp em?
    Gửi bởi olavien trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 12-12-2007, 08:45 AM

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