Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 2 của 2 Đầu tiênĐầu tiên 12
Kết quả 11 đến 12 của 12

Chủ đề: Tổng Ước

  1. #11
    Trích dẫn Gửi bởi kudoshinichi165
    ước của 10 là 1 2 5 10 vậy nếu <sqrt(10) thì làm sao tìm đc 5 và 10 vậy bạn
    - à, thật ra là thế này, nếu a là ước của n thì số b = n/a cũng là ước của n =>suy ra với mỗi ước a bạn còn tìm được thêm 1 ước b thỏa mãn a*b =n => số nhỏ hơn trong 2 số a và b chắc chắn phải nhỏ hơn căn bậc 2 của n.

    - code đây:
    int S =0;
    for(int i=1;i<=sqrt(n);i++)
    if(n%i ==0)
    {
    S = S +i + n/i;
    }
    - cơ bản thì là vậy, ngoại lệ là khi căn của n là số nguyên(ví dụ n=25) => i và n/i bằng nhau tại bước cuối của vòng for => số đó bị tính 2 lần, bạn cần xử lý 1 chút cho ngoại lệ này.

  2. #12
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi kudoshinichi165
    cách của bạn thì tìm làm sao đc hết ước của n, vi dụ n=10 thi làm sao tìm đc i =10 là ước vây?
    cứ dùng for(int i=2; i<=sqrt(10); ++i) or for(int i = 2; i * i <= n; ++i) rồi klhi nào tính toán thì + n vào là ok.có thể đó là cách tối ưu vòng for nhất

 

 
Trang 2 của 2 Đầu tiênĐầu tiên 12

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •