Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 22 kết quả

Đề tài: BSCNN | bội số chung nhỏ nhất | Tìm BSCNN

  1. #1
    Ngày gia nhập
    03 2009
    Nơi ở
    quan binh thanh
    Bài viết
    36

    Lightbulb BSCNN | bội số chung nhỏ nhất | Tìm BSCNN

    viết chương trình nhập một dãy các số nguyên bất kì(không sử dụng mảng)và tính tổng các số chẳn dương( gọi là a),tổng các số lẻ dương(gọi là b). bội số chung nhỏ nhất (a,b). huynh nào giải giùm mình

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

    Bài bội chung nhỏ nhất:
    Trước tiên, phải viết hàm tìm ước chung lớn nhất theo thuật toán Euclide, sau đó mới tìm bội chung nhỏ nhất.
    BCNN=tích 2 số/UCLN;

    C Code:
    1. #include<iostream.h>
    2. #include<stdio.h>
    3. #include<conio.h>
    4. int UCLN(int, int);
    5. int BCNN(int, int);
    6. int main()
    7. {
    8.     int a, b;
    9.     printf("Nhap vao so thu nhat: \n");scanf("%d",&a);
    10.     printf("Nhap vao so thu hai: \n");scanf("%d",&b);
    11.     printf("Uoc chung lon nhat cua %d va %d la: %d\n\n",a,b,UCLN(a,b));
    12.     printf("Boi chung nho nhat cua %d va %d la: %d\n",a,b,BCNN(a,b));
    13.    
    14. getch();   
    15. }  
    16. int UCLN(int a,int b)
    17. {
    18.         return (b==0)?a:UCLN(b, a%b);//THUẬT TOÁN EUCLIDE, viết theo kĩ thuật đệ quy.
    19. }  
    20. int BCNN(int a, int b)
    21. {
    22.     return int(a*b)/UCLN(a,b); 
    23. }
    Thuật toán Euclide viết theo cách "tường minh" hơn:
    C Code:
    1. int UCLN(int a,int b)
    2. {
    3.     if(a==0)
    4.         return b;
    5.     else if(b==0)
    6.             return a;
    7.     else
    8.     {
    9.     int c;
    10.     do
    11.     {
    12.         c=a%b;
    13.         a=b;
    14.         b=c;
    15.     }while(c!=0);
    16.     return a;
    17.     }
    18.    
    19. }
    Bạn thay hàm này vào trên là chạy được.
    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
    11 2008
    Bài viết
    116

    Thêm 1 thuật toán tìm UCLN
    C Code:
    1. while(a!=b)
    2. {
    3.     if(a>b)
    4.         a-=b;
    5.     if(a<b)
    6.         b-=a;
    7. }
    8. return a;

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

    Bài 2, cái này mình sử dụng kĩ thuật cộng dồn.
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. int UCLN(int, int);
    4. int BCNN(int, int);
    5. int main()
    6. {
    7.     int number=0, tongsole=0,tongsochan=0,i=1, giatrisonhapvao=0;//GAN TRI MAC DINH, KHONG GAN CUNG CHA CHET AI!!!!
    8.     printf("Day co bao nhieu so: ");scanf("%d",&number);
    9.     do
    10.     {
    11.         printf("Nhap vao so thu %d: ",i);scanf("%d",&giatrisonhapvao);
    12.         if(giatrisonhapvao%2==0)
    13.             tongsochan+=giatrisonhapvao;//Cộng dồn vào bientongsochan sau mỗi lần lặp.
    14.         else
    15.             tongsole+=giatrisonhapvao;//Cộng dồn vào bientongsole sau mỗi lần lặp.
    16.         i++;
    17.     }while(number-->1);
    18.     printf("\n\n\nTong cac so le: %d\n",tongsole);
    19.     printf("Tong cac so chan: %d\n",tongsochan);
    20.     getch();
    21. }
    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.

  5. #5
    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 Loveanygirls Xem bài viết
    Bài 2, cái này mình sử dụng kĩ thuật cộng dồn.
    Code:
    #include<stdio.h>
    #include<conio.h>
    int UCLN(int, int);
    int BCNN(int, int);
    int main()
    {
    	int number=0, tongsole=0,tongsochan=0,i=1, giatrisonhapvao=0;//GAN TRI MAC DINH, KHONG GAN CUNG CHA CHET AI!!!!
    	printf("Day co bao nhieu so: ");scanf("%d",&number);
    	do
    	{
    		printf("Nhap vao so thu %d: ",i);scanf("%d",&giatrisonhapvao);
    		if(giatrisonhapvao%2==0)
    		    tongsochan+=giatrisonhapvao;//Cộng dồn vào bientongsochan sau mỗi lần lặp.
    		else
    			tongsole+=giatrisonhapvao;//Cộng dồn vào bientongsole sau mỗi lần lặp.
    		i++;
    	}while(number-->1);
    	printf("\n\n\nTong cac so le: %d\n",tongsole);
    	printf("Tong cac so chan: %d\n",tongsochan);
    	getch();
    }
    Bài của bạn chi tiết quá. Nhưng đâu cần đặt tên biến dài dữ vậy

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

    Mặc định BSCNN | bội số chung nhỏ nhất | Tìm BSCNN

    Trích dẫn Nguyên bản được gửi bởi clementboy03 Xem bài viết
    Bài của bạn chi tiết quá. Nhưng đâu cần đặt tên biến dài dữ vậy
    Haha! Bạn muốn "gây sự" với tớ à? Tớ thấy C cho đặt tên biến tới 2xx kí tự, cho nhiều thế mà xài không hết thì hơi phí, đặt dài như thế cho có lời và khỏi cần phải chú giải, chú thích! Hehe!
    Mà cái giải thuật tìm UCLN của bạn, nếu cho a=100000000000,b=1 thì máy chạy xong nó bốc khói đấy!
    Đã được chỉnh sửa lần cuối bởi Loveanygirls : 29-03-2009 lúc 01:02 PM.
    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.

  7. #7
    Ngày gia nhập
    03 2009
    Nơi ở
    quan binh thanh
    Bài viết
    36

    ý nghĩa của bài toán là như thế này nè các bạn
    ví dụ bạn nhập vào n=9 thì nó sẽ in ra 1,2,3,4,5,6,7,8,9 ( chứ không phải nhập vào n=9 không thôi)
    tổng các số chẳn là: ...
    tổng các số lẻ là:...
    các bạn viết code cho trường hợp này được kô

  8. #8
    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 Loveanygirls Xem bài viết
    Haha! Bạn muốn "gây sự" với tớ à? Tớ thấy C cho đặt tên biến tới 2xx kí tự, cho nhiều thế mà xài không hết thì hơi phí, đặt dài như thế cho có lời và khỏi cần phải chú giải, chú thích! Hehe!
    Mà cái giải thuật tìm UCLN của bạn, nếu cho a=100000000000,b=1 thì máy chạy xong nó bốc khói đấy!
    Nói như bạn thì :|

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

    code nè coi dc ko bạn
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. int BSCNN(int a,int b)
    5. {
    6.     int z;
    7.     if(a>=b)
    8.    
    9.         for(int i=1;i<=b;i++)
    10.         {
    11.             if((a*i)%b==0)
    12.             {
    13.                 z=(a*i);
    14.                 break;
    15.             }
    16.         }
    17.     else
    18.     {
    19.         for(int k=1;k<=a;k++)
    20.         {
    21.             if((b*k)%a==0)
    22.             {
    23.                 z=(b*k);
    24.                 break;
    25.             }
    26.         }
    27.     }
    28.     return z;
    29. }
    30. void main()
    31. {
    32.     int n,s1=0,s2=0,g;
    33.     printf("nhap so");
    34.     scanf("%d%*c",&n);
    35.     for(int i=1;i<=n;i++)
    36.     {
    37.         if(i%2==0)
    38.         s1=s1+i;
    39.         else
    40.         s2=s2+i;
    41.     }
    42.         g=BSCNN(s1,s2);
    43.     printf("boi chung nho nhat la %d",g);
    44.     printf("\ntong so chan la %d",s1);
    45.     printf("\ntong so le la %d",s2);
    46. }
    Đã được chỉnh sửa lần cuối bởi trungvn222 : 29-03-2009 lúc 03:42 PM.

  10. #10
    Ngày gia nhập
    03 2009
    Nơi ở
    quan binh thanh
    Bài viết
    36

    code cua trungvn222 hết xẩy. có huynh nào cho mình ý tưởng hay viết code của tìm bội chung nhỏ nhất,ước chung lớn nhất của ba số không.

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

  1. 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
  2. Tìm BSCNN của mảng một chiều trong lập trình C++. Kết quả sai: BSCNN = tích các số trong mảng luôn?
    Gửi bởi boy_lonely_0106 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 25-01-2011, 01:07 PM
  3. Tính USCLN và BSCNN
    Gửi bởi ximachaos trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 19-08-2009, 07:49 AM
  4. Tìm BSCNN của dãy số
    Gửi bởi meocontaplamC trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 14
    Bài viết cuối: 23-04-2008, 07:33 AM
  5. Lập trình C | Tính USCLN và BSCNN?
    Gửi bởi grubkhukho trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 19-01-2007, 12:34 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