Đánh giá, nhận xét, review các công ty tuyển dụng
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ố 11 kết quả

Đề tài: bài toán in ra các số nguyên tố

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

    Red face bài toán in ra các số nguyên tố

    (viet chung vao 1 chuong trinh)
    Bai 1.Tìm tất cả các số nguyên tố trong khoảng từ 2 tới 1015 và in lên màn hình mỗi dòng 10 số.
    Bai 2..Phân tích một số tự nhiên N thành tích các số nguyên tố, Ví dụ 90 = 2 * 3 * 3 * 5
    Tìm n số nguyên tố đầu tiên. Ví dụ n=8 thì kết quả là: 2,3,5,7,11,13,17,19

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,714

    Cả 2 bài này, đã có hết trên diễn đàn rồi. Bạn cố gắng tìm kiếm, sau đó suy nghĩ là làm theo cách bạn nghĩ. Đến lúc làm, khó khăn gì thì đưa lên đây mọi người sẽ giúp.

    Lưu ý: Bạn nên đọc Nội quy trước khi gửi bài viết của mình lên diễn đàn cộng đồng C Việt, đừng ngại, hay do dự vì mất mấy phút đọc Nội quy. Nếu bạn còn ngại, trong cuộc sống của bạn chắc chắn là sẽ có nhiều công việc bị trì trệ do bạn đã ngại làm nó.

    Chúc bạn may mắn.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    03 2008
    Bài viết
    126

    mình code cho bạn bài 1 bạn xem thủ nhé. Hok biết đúng ko nữa
    C Code:
    1. #include <stdio.h>
    2. int KiemTraNguyenTo(int k)
    3. {
    4.     int flac=0;
    5.     int dem=0;
    6.     for(int i=1;i<=k;i++)
    7.         if(k%i==0)
    8.             dem++;
    9.         if(dem==2)
    10.             flac=1;
    11.         return flac;
    12. }
    13. void main()
    14. {
    15.     int dem=0;
    16.     for(int i=2;i<=2005;i++)
    17.     {
    18.         if(KiemTraNguyenTo(i)==1)
    19.         {
    20.             printf("%5d",i);
    21.             dem++;
    22.         if(dem==10)
    23.         {
    24.             printf("\n");
    25.             dem=0;
    26.         }
    27.         }
    28.     }
    29. }

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

    bài 2 tìm n số nguyên tố đầu nè
    Code:
    #include <stdio.h>
    int KiemTraNguyenTo(int k)
    {
    	int flac=0;
    	int dem=0;
    	for(int i=1;i<=k;i++)
    		if(k%i==0)
    			dem++;
    		if(dem==2)
    			flac=1;
    		return flac;
    }
    void main()
    {
    	int n;
    	int dem=0;
    	printf("Cu teo nhap n nao: ");
    	scanf("%d",&n);
    	for(int i=1;;i++)
    	{
    		if(KiemTraNguyenTo(i)==1)
    		{
    			dem++;
    			printf("%2d  ",i);
    		}
    		if(dem==n)
    			break;
    	}
    }

  5. #5
    Ngày gia nhập
    10 2007
    Bài viết
    24

    Mình bận wá nên hướng dẫn cho bạn cách làm bài 2"phân tích thành thừa số nguyên tố" :bạn chịu khó làm rồi post lên mình test cho hen...
    Bạn dùng hàm while..do.. cứ chia lần lượt số đó cho các số nguyên tố từ bé đến cao hơn như là 2,3,5,7,11,13,17...nếu chia hết đc cho số 2 thì cứ chia cho đến lúc ko chia hết đc thì ngừng,tiếp tục qua số 3 làm y như trên rồi các số khác.Mỗii cái xong bạn chèn cho mình dấu " * "vào nhé.Nhưng bạn ơi sự đời ko đơn giản:có hạn chế.Mình tìm chưa thấy Ctrình nào làm cái này một cách hoàn thiện hết.hạn chế như sau:
    "Nếu ko chia hết cho 2,mình đi chia 3,lại ko chia hết cho 3,lại đi chia hết 5...Như vậy khi mình gặp một số nó là tích nguyên tố của hai số ngtố lớn khủng khiếp.ví dụ chỉ là số 143 = 11*13 thôi đi.Lúc đó đòi hỏi mình phải nhớ dãy số ngtố thật nhiều.Nhưng nhiều thì bao nhiêu:tới tỷ,tỷ,đại sư tỷ lun àh.Bởi vậy mình nghĩ luôn tồn tại một số N làm cho CTrình của mình sai>>Ctrình của mình ko bao jờ đúng àh...Bời vậy nghe nói các nhà toán học Ấn độ mới nghĩ là hàm kiểm tra số nguyên tố lớn đó bạn..thấy chưa?Hình như trong box giải thuật.
    cách khắc phục tạm thời:
    "bạn tạo ra một mảng A[k] các số nguyên tố đi.càng nhiều càng tốt.lên tới hàng nghìn đi..
    Khi đó bạn cho một biến k nó chạy:lúc đầu k==0 ứng với số 2 rồi sau khi chia cho số 2 ko dc mình k++ lúc này nó chia cho số A[1]==3 thì khỏi mắc công nhớ dảy số ngtố.Dãy này thì mình cho máy tự tạo ra đc mà.."Nó sẽ hạn chế đc phần nào..bạn thix có thể chơi hàng chục nghìn số cho mình..
    Ý hình như câu 2b là kêu in ra dãy ngtố lun đó.Oh tiện thế nhỉ.
    Thanks.Chúc bạn thành công nhé.

  6. #6
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,918

    Mặc định bài toán in ra các số nguyên tố

    Nếu giải thuật kiểm tra số nguyên tố có thể làm đơn giản như sau :
    C++ Code:
    1. bool IsPrime(int num)
    2. {
    3.     if(num < 1) return false;
    4.     if (num == 2 || num == 3) return true;
    5.     if (num % 2 == 0 || num % 3 == 0) return false;
    6.  
    7.     int variable = 5,
    8.         factor = 2;
    9.     while(variable <= static_cast<int>(sqrt(static_cast<double>(num))))
    10.     {
    11.         if(num % variable == 0)
    12.             return false;
    13.         //generate all numbers such that number = 1 mod(6) and number = 5 mod(6)
    14.         //instead of += 2 every time, it increase +2, +4, +2, +4, +2, +4.....etc
    15.         variable += factor;
    16.         factor = 6 - factor;
    17.     }
    18.     return true;
    19. }
    Tác giả của bài này Katatonia bên diendantinhoc.com
    -Giải thuật kiểm tra rất hay :
    -Nhận xét 1 số nguyên tố chia 6 luôn dư 1 hoặc 5.
    -CM đơn giản là : 1 số nguyên dương luôn được biễu diễn dưới dạng :
    6k + 0, 6k + 1, 6k + 2, 6k + 3, 6k + 4, 6k + 5.
    Mà 6k % 2, 6k + 2 = 3(k + 2) % 3, 6k + 4 = 2(k + 3) % 2.
    Vậy chỉ còn lại 2 thằng 6k + 1, 6k + 5, do đó giải thuật thay vì phải generate tất cả các ước nguyên tố nhỏ hơn sqrt(n) chỉ cần xét các ước thuộc lớp đồng dư 1 mod 6 và 5 mod 6.
    - Và giải thuật trên bắt đầu từ 5-> +2, +4, +2, +4.
    Đây là giải thuật hay và không khó, nếu mới học thì chỉ cần dùng giải thuật này là ok.
    - Còn bài phân tích ra số nguyên tố thì đã được bàn luận rất kĩ càng trong box giải thuật, bạn vào đó tìm 1 chút là xong, tuy nhiên nên suy nghĩ ít nhất 15' rùi hãy coi lời giải .

  7. #7
    Ngày gia nhập
    03 2008
    Bài viết
    126

    bạn rox_rook ơi bạn code tiếng việt đi
    bạn code tiếng anh nhiều lúc rối quá
    Code:
    bool IsPrime(int num)
    lần sau ban code tiếng việt cái để dể nhìn hơn nha

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

    Tại sao phải chuyển sang thành tiếng Việt nhỉ, kiểu như thế này á
    Code:
      
       bool la_so_nguyen_to (int num)
    Nếu như vậy thì tiếng Anh dễ nhìn hơn nhiều chứ.

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

    6k + 2 = 3(k + 2) % 3, 6k + 4 = 2(k + 3) % 2
    kg biết có phải rox_rook lộn chỗ này kg ,sao thấy kì kì .
    Mình nghĩ phải là 6k+2=2(3k+1)%2,6k+3=3(3k+1)%3,6k+4=2(3k+2)%2 chứ ,phải kg zậy ta ???

  10. #10
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,918

    Hì hì ! Thanks, không hiểu sao mình có thể đặt thừa số chung đẳng cấp đến vậy haha T_T ! Mình sợ mình luôn !!

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