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ố 17 kết quả

Đề tài: Phân tích ra thừa số nguyên tố, tìm UCLN trên C?

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

    Mặc định Phân tích ra thừa số nguyên tố, tìm UCLN trên C?

    em mới học lập trình c và có câu hỏi này mong mọi người giúp đỡ:
    Tìm ucln của 2 số nguyên dương yêu cầu phân tích ra thừa số các giá trị, ví dụ sau khi thực thi chương trình là
    Nhập a=:180=2*2*3*3*5
    Nhập B=:300=2*2*3*5*5
    UCLN:=2*2*3*5=60
    mong sớm được hồi âm, xin cảm ơn trước.

  2. #2
    Ngày gia nhập
    11 2008
    Bài viết
    203

    Bài này mình làm được nhưng mà mình không post code đâu, vì bạn đặt tiêu đề không rõ ràng, bài sẽ bị xóa, như thế thì uổng công mình lắm!
    Tôi tin rằng: giải thuật thì có thể tìm trong hàng trăm GB ebook, hoặc Google nhưng code chạy thì chưa chắc! Hãy post code để chứng tỏ giải thuật của bạn là đúng!
    Giải thuật là bản thiết kế của ngôi nhà, code là phần xây dựng. Nếu chỉ xây nhà trên giấy thì ta sống chả khác nào người nguyên thủy.

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    11

    Trích dẫn Nguyên bản được gửi bởi Loveanygirls Xem bài viết
    Bài này mình làm được nhưng mà mình không post code đâu, vì bạn đặt tiêu đề không rõ ràng, bài sẽ bị xóa, như thế thì uổng công mình lắm!
    Ừ,bạn loveanygirls nói đúng đó,khi post bài lên,ko chỉ đúng phần cần post mà còn phải có tiều đề rõ ràng,->nên đọc nội quy trc khi post bài nhá^^
    where is the will,there is a way!!!Relax without pain!^^

  4. #4
    Ngày gia nhập
    11 2008
    Bài viết
    116

    do bài này mới làm xong nên up cho bạn luôn. Lần sau đặt tiêu đề rõ ràng tí là đc.
    PHP Code:
    #include <stdio.h>
    #include <math.h>
    int xdnt(int x);
    void phantich(int n);
    int xdnt(int x)
    {
        if(
    n<2)
            return 
    0;
        for(
    int i=2;i<=sqrt(x);i++)
            if(
    x%i==0)
                return 
    0;
        return 
    1;
    }
    void phantich(int n)
    {
        
    int i=2;
        while(
    n>1)
        {
            if(
    xdnt(i))
                if(
    n%i==0)
                    {
                        
    printf("%d ",i);
                        
    n/=i;
                    }    
                else
                    
    i++;
            else 
                
    i++;
        }
    }
    void main()
    {
        
    int n;
        
    printf("\nnhap n: ");
        
    scanf("%d",&n);
        
    phantich(n);


  5. #5
    Ngày gia nhập
    11 2008
    Bài viết
    21

    Hic, mấy chủ đề kiểu này lặp lại không biết bao lần trên CViệt rồi, mình có ý kiến là nên lập riêng 1 box dành cho các bài tập c cơ bản (cơ bản là thế nào thì các để mod xem xét), để thế này tốn tài nguyên lắm, mod nào xóa xem giúp ý kiến này nhá!

    @clementboy03 : kiểm tra có phải số nguyên tố không là thừa, vì khi i tăng thì hiển nhiên các số nguyên tố sẽ được bắt gặp trước các bội của nó.
    Đã được chỉnh sửa lần cuối bởi regist : 08-05-2009 lúc 10:51 PM.

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

    Mặc định Phân tích ra thừa số nguyên tố, tìm UCLN trên C?

    @huynhvison: Em cái tiêu đề đã được edit lại nhé, lần sau nếu tiếp diễn bài của bạn sẽ bị del không báo trước.

    Nhập a=:180=2*2*3*3*5
    Nhập B=:300=2*2*3*5*5
    UCLN:=2*2*3*5=60
    Tham khảo code của clementboy03 và góp ý của regist:
    - Có thể lưu các thừa số vào 2 mảng tương ứng, rồi tính UCLN là tích các giá trị khác nhau có được từ 2 mảng đó.
    - Hoặc lưu các thừa số khác nhau vào một mảng để tính UCLN.

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

    vâng em xin tiếp thu ý kiến ạ, nhưng cho em hỏi là mình làm bài trên bằng cách ko dùng hàm, ko dùng mảng thì làm thế nào ạ, vì em chưa học sang mảng và hàm ạ
    Đã được chỉnh sửa lần cuối bởi huynhvison : 09-05-2009 lúc 04:05 AM.

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

    Trích dẫn Nguyên bản được gửi bởi huynhvison Xem bài viết
    vâng em xin tiếp thu ý kiến ạ, nhưng cho em hỏi là mình làm bài trên bằng cách ko dùng hàm, ko dùng mảng thì làm thế nào ạ, vì em chưa học sang mảng và hàm ạ
    Sr, mình nghĩ nhầm, không phức tạp đến thế. Bạn thử cái này nhé!
    C Code:
    1. #include <stdio.h>
    2.  
    3. void Process(int a)
    4. {
    5.     printf("%d =",a);
    6.     while (1)
    7.     {
    8.         int i,ok=1;
    9.         for (i=2; i<a/2; i++)
    10.             if (a%i==0)
    11.             {
    12.                 a /= i;
    13.                 printf(" %d *",i);
    14.                 ok = 0;
    15.                 break;
    16.             }
    17.         if (ok) break;
    18.     }
    19.     printf(" %d\n",a);
    20. }
    21.  
    22. void UCLN(int a, int b)
    23. {
    24.     printf("UCLN(%d,%d) =",a,b);
    25.     while (1)
    26.     {
    27.         int i,ok=1;
    28.         for (i=2; i<a/2; i++)
    29.             if (a%i==0 && b%i==0)
    30.             {
    31.                 a /= i;b /= i;
    32.                 printf(" %d *",i);
    33.                 ok = 0;
    34.                 break;
    35.             }
    36.         if (ok) break;
    37.     }
    38.     if (a%b==0) printf(" %d",b);
    39.     else if (b%a==0) printf(" %d",a);
    40.     else printf(" 1");
    41. }
    42.  
    43. int main()
    44. {
    45.     int a = 20, b = 26;
    46.     Process(a);
    47.     Process(b);
    48.     UCLN(a,b);
    49.     return 0;
    50. }

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

    C Code:
    1. #include <stdio.h>
    2. int ktnt(int x)
    3. {       int kt=1;
    4.     for(int i=2;(i<=x/2)&&(kt!=0);i++)
    5.     {
    6.         if(x%i==0)
    7.         kt=0;
    8.         else
    9.         kt=1;
    10.     }
    11.     return kt;
    12. }
    13. int phantich(int y)
    14. {
    15.    
    16.     for(int i=2;y>1;)
    17.     {
    18.         if(ktnt!=0)
    19.             if(y%i==0)
    20.             {
    21.                 printf("%d ",i);
    22.                 y=y/i;
    23.             }
    24.             else
    25.             i++;
    26.     }
    27. }
    28. void main()
    29. {
    30.     int a;
    31.     scanf("%d",&a);
    32.     phantich(a);
    33. }
    đây là bài của mình hơi dài 1 tý

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

    Trích dẫn Nguyên bản được gửi bởi regist Xem bài viết
    @clementboy03 : kiểm tra có phải số nguyên tố không là thừa, vì khi i tăng thì hiển nhiên các số nguyên tố sẽ được bắt gặp trước các bội của nó.
    Tui hoàn toàn ko hiểu ý của bạn. Bạn cho 1 VD cụ thể đc ko ?

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

  1. Lập trình C++ Sửa lỗi , Tìm UCLN
    Gửi bởi thao260694 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 10-12-2012, 02:43 PM
  2. Ucln & Bscnn
    Gửi bởi bannhacuagai trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 7
    Bài viết cuối: 10-08-2012, 12:53 PM
  3. Game Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên trên C#?
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 18
    Bài viết cuối: 08-06-2011, 11:12 PM
  4. Bài tập C Tìm UCLN và BCNN của n số nguyên dương.
    Gửi bởi conrongchautien trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 24-05-2011, 01:27 PM
  5. ucln trên từng dòng trên mảng 2 chiều
    Gửi bởi huongtan trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 09-01-2011, 02:13 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