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

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

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

    Talking phân tích 1 số thành thừa số nguyên tố

    giúp mình cách làm bài này với, đề như sau: phân tích 1 số thành thừa số nguyên tố và đưa ra kết quả dưới dạng (m1, n1)(m2,n2)....
    trong đó m(i) là thừa số nguyên tố, còn n(i) là số mũ.
    ví dụ: 18= (2,1)(3,2)
    50= (2,1)(5,2)
    mình chưa nghĩ đc cả thuật toán lẫn cách viết thế nào. hic.

  2. #2
    Ngày gia nhập
    10 2010
    Nơi ở
    Hà Nội
    Bài viết
    24

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4.  
    5. ntotest (int x)
    6. {
    7.     int i,kq=1;
    8.    if (x>3)
    9.    {
    10.     for (i=2;i<=pow(x,0.5);i++)
    11.       {
    12.         if (x%i==0) kq=0;
    13.       }
    14.    }
    15.    return(kq);
    16. }
    17. void main()
    18. {
    19.     int n,i,dem=0,m,last,nto[1000],ntodem[1000];
    20.    printf("nhap n:");scanf("%d", &n);
    21.    for (i=1;i<=n;i++)
    22.    {
    23.     if (ntotest(i)==1)
    24.       {
    25.         dem++;nto[dem]=i;
    26.       }
    27.    }
    28.    m=n;
    29.    for (i=2;i<=dem;i++) ntodem[i]=0;
    30.     for (i=2;i<=dem;i++)
    31.    {
    32.         while (m%nto[i]==0)
    33.       {
    34.         m=m/nto[i];ntodem[i]++;last=i;
    35.       }
    36.    }
    37.    printf("ket qua la: ");
    38.     for (i=2;i<=dem;i++)
    39.    {
    40.     if (ntodem[i]!=0)
    41.       {
    42.             printf("%d^%d", nto[i], ntodem[i]);
    43.         if (i<last)
    44.         printf ("x");
    45.       }
    46.    }
    47.     getch();
    48. }

    đây là bài mình làm, bạn có thể tham khảo thuật toán còn vè việc in ra kết quả như của bạn, bạn có thể tự sửa thành như yêu cầu

  3. #3
    Ngày gia nhập
    09 2010
    Bài viết
    15

    cảm ơn bạn làm giúp nhé . bạn có thể nói rõ kiểu thuật toán cho mình đc ko, bắt đầu từ đâu để làm được bài này?

  4. #4
    Ngày gia nhập
    10 2010
    Nơi ở
    Hà Nội
    Bài viết
    24

    B1:Tìm tất cả các số nguyên tố nhỏ hơn N và đếm số các số nguyên tố này thông qua biến dem rồi gán vào làm 1 mảng nto
    B2:tạo 1 mảng nữa gọi là ntodem vs giá trị ban đầu của các thành phần trong mảng đều bằng 0 để đếm số mũ của thừa số nguyên tố ở kết quả
    B2: Chia lần lượt N dần cho từng thành phần của mảng A (a[i] i chạy từ 0 -> dem)
    nếu chia hết thì N=N/a[i]; ntodem[i]++;
    nếu không chia hết xét tiếp số nguyên tố tiếp theo (i++)
    B3:dùng vòng lặp for để in ra kết quả
    HẾT!

  5. #5
    Ngày gia nhập
    03 2009
    Nơi ở
    Ở địa ngục
    Bài viết
    633

    C Code:
    1. int a[1000],i=0,j=2,n;
    2. while(n!=1)
    3. {
    4.     while(!(n%j))
    5.         {
    6.         n/=j;
    7.         a[i]=j;
    8.         i++;
    9.         }
    10.     j++;
    11. }
    12. a[i]=1;
    13. a[i+1]=-1;

    Tặng bạn cái code mình học trên diễn đàn từ hồi năm ngoái, hi

  6. #6
    Ngày gia nhập
    08 2010
    Nơi ở
    Moscow, Russia Federation
    Bài viết
    913

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

    Trích dẫn Nguyên bản được gửi bởi chjecla_ Xem bài viết
    giúp mình cách làm bài này với, đề như sau: phân tích 1 số thành thừa số nguyên tố và đưa ra kết quả dưới dạng (m1, n1)(m2,n2)....
    trong đó m(i) là thừa số nguyên tố, còn n(i) là số mũ.
    ví dụ: 18= (2,1)(3,2)
    50= (2,1)(5,2)
    mình chưa nghĩ đc cả thuật toán lẫn cách viết thế nào. hic.
    Đây là code để bạn chạy thử
    C++ Code:
    1. #include <iostream>
    2. int main () {
    3.     int n;
    4.     std::cin >> n;
    5.     int count = 0;
    6.     for (int i = 2; i <= n; i ++) {
    7.         while (n % i == 0) {
    8.             count ++;
    9.             n /= i;
    10.         }
    11.         if (count ) {
    12.             std::cout << "(" << i << "," << count << ")" << std::endl;
    13.             count = 0;
    14.         }
    15.     }
    16. }
    test result
    PHP Code:
    105
    (3,1)
    (
    5,1)
    (
    7,1)
    Press any key to continue . . . 
    Giải thích thuật toán: Một số không phải là số nguyên tố luôn luôn biểu diễn được dưới dạng tích các thừa số là nguyên tố. Ta sẽ lần lượt chia số cần biểu diễn cho số nguyên tố nhỏ nhất là 2, sau đó tăng dần giá trị lên 3, 4, 5, 6. Tất nhiên bạn sẽ thấy 4, 6 ... không phải là số nguyên tố, nhưng thuật toán sẽ không sai, vì một số chia hết cho 4 khi và chỉ khi nó chia hết cho 2*2, tức là ta thực hiện vòng lặp chừng nào lần, đến khi giá trị của số bị chia n không còn chia hết cho số chia nữa thì mới tăng số chia i lên. Mỗi lần chia cho i, số bị chia sẽ giảm đi i lần, tức là giá trị của nó còn lại n/i. Lặp cho đến khi số chia to bằng số bị chia thì dừng Trường hợp này chỉ xảy ra nếu số bị chia là nguyên tố
    Mời các bạn ghé thăm blog cá nhân của tôi

  7. #7
    Ngày gia nhập
    10 2010
    Bài viết
    4

    C Code:
    1. #include<stdio.h>
    2.  
    3. int main()
    4. {
    5.     int n, i;
    6.    
    7.     do
    8.         {
    9.             printf("\n Nhap so nguyen duong n = ");
    10.             scanf("%d",&n);
    11.             if (n<=0) printf("\n Moi nhap lai n la so nguyen duong");
    12.         }
    13.     while (n<=0);
    14.    
    15.     if (n<2)
    16.         {
    17.             printf("\n Khong the phan tich %d thanh tich cac so nguyen to",n);             
    18.         }
    19.     else
    20.         {
    21.             printf("%d =  ", n);       
    22.             for(i = 2; i < n;)
    23.             if(!(n % i))
    24.                 {
    25.                     printf("%d * ", i);
    26.                     n =n / i;
    27.                 }
    28.             else  
    29.                 ++i;
    30.             printf("%d ", n);                  
    31.         }
    32.     return 0;
    33. }

  8. #8
    Ngày gia nhập
    11 2010
    Bài viết
    1

    Mặc định Phân tích số tự nhiên N thành tích các thừa số nguyên tố

    giải giúp em bài tập này:
    Viết chương trình nhập số nguyên dương N. In ra màn hình cách phân tích N thành thừa số nguyên tố (VD:100 = 2^2 x 5^2).

  9. #9
    Ngày gia nhập
    08 2010
    Nơi ở
    Moscow, Russia Federation
    Bài viết
    913

    Bài viết đầu tiên của bạn trên diễn đàn, chúc mừng và hân hạnh đón chào bạn! Nhưng mình rất mong bạn hãy bỏ ra ít phút để đọc lại nội quy post bài, cách đặt tiêu đề, và nói chung là những vẫn đề cần thiết nên biết khi tham gia giao lưu trên forum!
    Dưới đây là code của bạn:
    C++ Code:
    1. #include <iostream>
    2. int main () {
    3.     int n;
    4.     std::cin >> n;
    5.     int count = 0;
    6.     for (int i = 2; i <= n; i ++) {
    7.         while (n % i == 0) {
    8.             count ++;
    9.             n /= i;
    10.         }
    11.         if (count ) {
    12.             std::cout << "(" << i << "," << count << ")" << std::endl;
    13.             count = 0;
    14.         }
    15.     }
    16. }
    Mời các bạn ghé thăm blog cá nhân của tôi

  10. #10
    Ngày gia nhập
    07 2012
    Bài viết
    60

    Mặc định Thắc mắc về if(count )

    Trích dẫn Nguyên bản được gửi bởi mp121209 Xem bài viết
    Bài viết đầu tiên của bạn trên diễn đàn, chúc mừng và hân hạnh đón chào bạn! Nhưng mình rất mong bạn hãy bỏ ra ít phút để đọc lại nội quy post bài, cách đặt tiêu đề, và nói chung là những vẫn đề cần thiết nên biết khi tham gia giao lưu trên forum!
    Dưới đây là code của bạn:
    C++ Code:
    1. #include <iostream>
    2. int main () {
    3.     int n;
    4.     std::cin >> n;
    5.     int count = 0;
    6.     for (int i = 2; i <= n; i ++) {
    7.         while (n % i == 0) {
    8.             count ++;
    9.             n /= i;
    10.         }
    11.        if (count ){
    12.             std::cout << "(" << i << "," << count << ")" << std::endl;
    13.             count = 0;
    14.         }
    15.     }
    16. }
    Cho mình hỏi, chỗ if(count ) là điều kiện gì thế? còn std::?. Mình không học C/C++ nhưng mình cần code bài này để chuyển sang C#, mà mình thì thắc mắc chỗ đó

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