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

Đề tài: tìm ước số lớn nhất

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

    Angry tìm ước số lớn nhất

    cho số nguyên dương n.Tìm ước số lớn nhất có lũy thừa cơ số 2 của số đó.Ví dụ:cho n=160,thì ước số lớn nhất có lũy thừa cơ số 2 của n là :2^5=32.

    Các bác hướng dẫn mình phương pháp và giải thuật với.Mình làm hoài mà vẫn không ra.Cảm ơn các bác đã xem tin.

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Trích dẫn Nguyên bản được gửi bởi luannguyen0508 Xem bài viết
    cho số nguyên dương n.Tìm ước số lớn nhất có lũy thừa cơ số 2 của số đó.Ví dụ:cho n=160,thì ước số lớn nhất có lũy thừa cơ số 2 của n là :2^5=32.

    Các bác hướng dẫn mình phương pháp và giải thuật với.Mình làm hoài mà vẫn không ra.Cảm ơn các bác đã xem tin.
    C Code:
    1. #include<stdio.h>
    2. int thuaso (int n)
    3. {
    4.     if (n==1)
    5.         return 0;
    6.     int lt=1;
    7.     for (int i=1;i<n;i++)
    8.     {
    9.         lt=lt*2;
    10.         if (lt==n)
    11.             return i;
    12.     }
    13.     return -1;
    14. }
    15. void uocso(int n)
    16. {
    17.     int i,mu;
    18.     for (i=n;i>0;i--)
    19.         if (n%i==0 && thuaso(i)!=-1)
    20.         {
    21.             mu= thuaso(i);
    22.             break;
    23.         }
    24.         printf("\nUoc do la: %d, so mu la: 2^%d\n",i,mu);
    25. }
    26. void main()
    27. {
    28.     int n;
    29.     printf("Nhap n: ");
    30.     scanf("%d",&n);
    31.     uocso(n);
    32. }
    Bạn thử với code trên xem sao!
    Thuật toán của mình là: sau khi nhập vào số n, cho biến i chạy từ n->1 nếu có i nào thỏa: n chia hết cho i và i đó phân tích ra được lũy thừa 2(thông qua hàm luythua) thì xuất ra kết quả

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    160

    hic hic gì mà cần dài vậy

    C Code:
    1. unsigned int uln2e(unsigned int x)
    2. {
    3.     unsigned int x2 = x;
    4.     while (x2%2 == 0) x2 /= 2;
    5.     /* hoặc while ((x2&1) == 0) x2 >>= 1;*/
    6.     return x/x2;
    7. }

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

    rất cám ơn 2 bác Vitbau và chicken.

  5. #5
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Trích dẫn Nguyên bản được gửi bởi fbchicken Xem bài viết
    hic hic gì mà cần dài vậy

    C Code:
    1. unsigned int uln2e(unsigned int x)
    2. {
    3.     unsigned int x2 = x;
    4.     while (x2%2 == 0) x2 /= 2;
    5.     /* hoặc while ((x2&1) == 0) x2 >>= 1;*/
    6.     return x/x2;
    7. }
    Bạn có thể viết luôn hàm main cho mình tham khảo được không??
    Tại...cách của bạn mình viết nó chưa ra

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

    Mặc định tìm ước số lớn nhất

    Trích dẫn Nguyên bản được gửi bởi vitbau1412 Xem bài viết
    Bạn có thể viết luôn hàm main cho mình tham khảo được không??
    Tại...cách của bạn mình viết nó chưa ra
    Gọi hàm thôi chứ có làm gì cao siêu đâu trời :
    C Code:
    1. void main()
    2. {
    3.     unsigned int num = uln2e(160);
    4.     // num sẽ có giá trị là 32
    5. }
    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.

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

  1. Sửa máy tính, cài đặt windows, phần mềm tại nhà nhanh nhất, rẻ nhất, hiệu quả nhất …
    Gửi bởi hopluccc 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: 08-07-2013, 02:07 PM
  2. Trả lời: 12
    Bài viết cuối: 25-10-2012, 02:48 AM
  3. Bài tập C++ NHập mảng một chiều gồm n phần tử kết thúc nhập khi nhập một chữ cái
    Gửi bởi thienthanoze trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 15
    Bài viết cuối: 09-07-2012, 10:10 PM
  4. Bài tập C++ Viết phương trình nhập vào 1 chuỗi số.Hãy nhập vào 1 số.Đếm xem có bao nhiêu chữ số bạn vừa nhập
    Gửi bởi namtuocdn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 16-10-2011, 10:39 AM
  5. Bài tập C++ Nhập mảng 1 chiều, nếu phần tử nhập trùng nhau thì bắt nhập lại
    Gửi bởi danielh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-07-2011, 03:35 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