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

Đề tài: Phân tích thừa số nguyên tố

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

    Mặc định Phân tích thừa số nguyên tố

    Em mới học C. Chỉ mới học đến hàm và các lệnh cấu trúc. Có bài tập viết chương trình phân tích thừa số nguyên tố. Đoạn code của em thế này:
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    
    void main ()
    {
    	int i,n,d;
    	clrscr();
    	printf ("Nhap so can phan tich:"); scanf ("%d",&n);
    	printf ("%d = ",n);
    	d=n;
    	if (n==0 || n==1)
    		printf ("%d",n);
    	for (i=2;i<=sqrt(d);i++)
    		{
    			while (n%i==0)
    			{
    				printf ("%d*",i);
    				n=n/i;
    			}
    		}
    	if (n==1)
    	{
    		getch(); return;
    	}
    	if (i>(sqrt(d)-1)) printf ("%d",n);
    	getch ();
    }
    em chạy chương trình kết quả rất chính xác nhưng cách trình bày thì chưa đúng. Ví dụ: 4=2*2*; 9=3*3* . Em định dùng lệnh printf ("\b") để loại bỏ dấu * cuối nhưng ko có tác dụng. Mong mọi người sửa giùm em đoạn code này. Em xin cám ơn nhiều!

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    bạn thử đoạn code này xem sao:

    PHP Code:

    void main 
    ()
    {
        
    int i,n,d;
        
    clrscr();
        
    printf ("Nhap so can phan tich:"); scanf ("%d",&n);
        
    printf ("%d = ",n);
        
    d=n;
        if (
    n==|| n==1){
            
    printf ("%d",n);
                    return;
             {

            
    printf(" 1 ");
        for (
    i=2;i<=sqrt(d);i++)
            {
                while (
    n%i==0)
                {
                    
    printf ("* %d",i);
                    
    n=n/i;
                }
            }
        if (
    n==1)
        {
            
    getch(); return;
        }
        if (
    i>(sqrt(d)-1)) printf ("%d",n);
        
    getch ();


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

    Code:
    if (i>(sqrt(d)-1)) printf ("%d",n);
    Sửa chút thành:
    Code:
    if (i>(sqrt(d)-1)) printf (" * %d",n);
    :d

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

    đoạn code của bạn zkday2686 bị lạc đề rồi, đề yêu cầu phân tích thừa số nguyên tố mà, đâu thể có số 1.

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

    Thế sửa như này nhé.
    Code:
        //printf(" 1 ");
        int t=1;
        for (i=2;i<=sqrt(d);i++)
            {
                while (n%i==0)
                {
                    if (t) {printf ("%d",i);t=0;}
                    else printf ("* %d",i);
                    n=n/i;
                }
            }

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

    Mặc định Phân tích thừa số nguyên tố

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    
    void main ()
    {
    	int i,n,d;
    	clrscr();
    	printf ("Nhap so can phan tich:"); scanf ("%d",&n);
    	printf ("%d = ",n);
    	d=n;
    	if (n==0 || n==1)
    		printf ("%d",n);
    
    	for (i=2;i<=sqrt(d);i++)
    		{
    			while (n%i==0)
    			{
    				printf ("%d*",i);
    				n=n/i;
    			}
    		}
    
    	if (n==1)
    	{
    		gotoxy(wherex()-1,wherey());
        		putch(' ');
    		getch(); return;
    	}
    
    	if (i > (sqrt(d)-1)) printf ("%d",n);
    	getch ();
    }
    code ra gió bão

  7. #7
    Ngày gia nhập
    12 2007
    Bài viết
    54

    // chuong trinh phan tich thua so nguyen to
    # include<stdio.h>
    # include<math.h>
    int ngto(int n)
    {
    if (n<2)
    return 0;
    for(int i=2;i<=sqrt(n);i++)
    if(n%i==0)
    return 0;
    else
    return 1;

    }

    void in(int A[],int n,int *j)
    { *j=0;
    for (int i=2;i<=n;i++)
    if(ngto(i))
    { A[*j]=i;
    (*j)++;
    }
    }
    void check(int A[],int m,int n,int B[],int *j)
    { *j=0;
    for(int i=0;i<m;i++)
    while(n%A[i]==0)
    { B[*j]=A[i];
    n=n/A[i];
    (*j)++;
    }
    }
    void main()
    { int A[100],B[100],n,m,k;
    printf("\n Nhap n:");
    scanf("%d",&n);
    in(A,n,&m);
    check(A,m,n,B,&k);
    for (int i=0;i<k;i++ )
    printf("%d* ",B[i]);
    }
    /* Thuat toan: liet ke cac so nguyen to tu 2 den n và luu vao 1 mang .Duyet mang do tu dau den cuoi .
    Kiem tra xem neu n chia het cho so nguyen to nao thì luu vao 1 mang khac và gan gia tri cua n=n/A[i]
    sau do tiep tuc kiem tra xem n co chia het cho A[i] neu ko thi thoat khoi vong lap . và chuyen sang
    kiem tra phan tu tiep theo cua mang
    */
    Đây là bài tớ làm sử dụng mảng . Ko biết có dễ hiểu ko
    Rất mong được mọi người giúp đỡ :

    Kiến thức mình biết chỉ là hạt cát trên sa mạc

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

    mình đã thử đoạn code của bạn 6220119, ok lắm! code của bạn QuangHoang thì mình chưa thử nhưng cũng thanks bạn nhé! Còn code của bạn thangit thì dùng mảng nhưng mảng mình chưa học tới nên ko áp dụng đc. thanks all!

  9. #9
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Trích dẫn Nguyên bản được gửi bởi kennedy Xem bài viết
    đoạn code của bạn zkday2686 bị lạc đề rồi, đề yêu cầu phân tích thừa số nguyên tố mà, đâu thể có số 1.
    vì trong định nghĩa của mình số 1 là số nguyên tố nên mình làm vậy thôi. chứ chưa nghe ai nói khi phân tích ra thừa số nguyên tố mà lại cấm tiệt không có số 1 cả:
    mình nhớ hồi học lớp 6(lâu lắc) thì dùng phép chia khi nào 2 bên cùng là 1 thì thôi mà.
    vd: 6 = 2*3*1;

    nên giờ cứ thế mà code.


    chúc bạn thành công.
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 10-09-2008 lúc 12:38 AM.

  10. #10
    Ngày gia nhập
    02 2008
    Nơi ở
    AYS 107
    Bài viết
    41

    Trích dẫn Nguyên bản được gửi bởi zkday2686 Xem bài viết
    vì trong định nghĩa của mình số 1 là số nguyên tố nên mình làm vậy thôi. chứ chưa nghe ai nói khi phân tích ra thừa số nguyên tố mà lại cấm tiệt không có số 1 cả:
    mình nhớ hồi học lớp 6(lâu lắc) thì dùng phép chia khi nào 2 bên cùng là 1 thì thôi mà.
    vd: 6 = 2*3*1;

    nên giờ cứ thế mà code.


    chúc bạn thành công.
    Đã đành trong định nghĩa của cậu 1 là số nguyên tố, nhưng định nghĩa đó sai, cũng nên sửa chứ. . Có sách nào bảo thế đâu
    I don't wanna waste another day

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

  1. Bài tập C giải thuật nhập vào số nguyên n in ra n số nguyên tố đầu tiên?
    Gửi bởi LTC trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 48
    Bài viết cuối: 25-04-2013, 07:40 PM
  2. 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.
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 19-06-2011, 01:05 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++ chương trình đổi 1 số nguyên trong hệ thập phân sang hệ fibo và cộng 2 số nguyên được
    Gửi bởi nghiapro512 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: 23-01-2011, 02:14 PM
  5. Lập trình C xin code cài đặt thuật toán sàng nguyên tố để liệt kê các số nguyên tố 2->480000
    Gửi bởi ngocdung_088 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 23
    Bài viết cuối: 06-12-2010, 11:53 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