Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: In số nguyên tố mỗi hàng 10 số

  1. #1
    No Avatar
    angelstar Khách

    Mặc định In số nguyên tố mỗi hàng 10 số

    Chào các ban !
    Mình có bài xin nhờ mấy bạn giúp mình giải nhé , sắp thi rùi.
    Đề là:
    Viết chương trình in ra các số nguyên tố từ 2 đến 1015 ,mỗi hàng mười số
    Giúp mình nha , cảm ơn các bạn nhiều.

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Đây là hàm kt số nguyên tố
    Code:
    bool LaNguyenTo(int n)
    {
    		bool co=true;
          if(n<2)
          {cout<<"Du lieu nhap sai va so do ";
       	return !co;}
       	else
          {
       		for(int i=2;i<=sqrt(n)+1;i++)
       		{
       			if(n%i==0)
          		        {
        				co=false;
          			        break;
          		         }
       		}
       	}
       return co;
    }
    Trong hàm main cậu cho vòng lặp for từ 2 đến 1015 rồi kt xem số nào thảo mãn thì in ra thôi.
    In code we trust

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

    làm 1 hàm kiểm tra số nguyên tố (trả về kiểu bool hay int đều dc)
    cho 1 biến i=0 , j=0
    i chạy từ 2 -> 1015 dùng hàm kiểm tra số nguyên tố nếu là true (1) thì lưu số vào mảng a[j] rồi tăng j (j++).
    xuất mảng a[] ra với điều kiện gặp j%10==0 thì xuống hàng.
    vì sắp thi nên tự làm là tốt nhất!

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    Dùng phương pháp sàng era gì đó(tôi lâu không làm quên mất tên rồi, các bạn trong ngành thì tự biết) có phải nhanh không

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

    cái mà iamvtn viết hình như là phương pháp sàng thì phải?

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

    Mặc định In số nguyên tố mỗi hàng 10 số

    ko biết thì đừng nói
    ko phải sàng era gì đó đâu

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

    nó co thể viết như sau
    Code:
    #define LEN 10000
    int a[LEN] = {"0"}; //khoi tao la 0
    for(int i = 2;i < LEN;i ++)
        if(a[i] == 0)
        {
          int k = 1;
          while(k*i < LEN)
                NT[i*k++] = 1;
           printf("%3d",i);
         }
    ngoài ra bạn có thể dùng 2 vòng lặp for

  8. #8
    Ngày gia nhập
    05 2007
    Bài viết
    64

    Avatar củasoda_chanhmuoi
    soda_chanhmuoi soda_chanhmuoi là offline
    Thành viên nhiệt tình

    Gia nhập ngày: 04 2007
    Bài viết: 160
    Mặc định
    làm 1 hàm kiểm tra số nguyên tố (trả về kiểu bool hay int đều dc)
    cho 1 biến i=0 , j=0
    i chạy từ 2 -> 1015 dùng hàm kiểm tra số nguyên tố nếu là true (1) thì lưu số vào mảng a[j] rồi tăng j (j++).
    xuất mảng a[] ra với điều kiện gặp j%10==0 thì xuống hàng.
    vì sắp thi nên tự làm là tốt nhất!
    Đề bài chỉ bảo in ra thôi. Dùng mảng chi vậy bạn ???
    Đã được chỉnh sửa lần cuối bởi nguyen190887 : 13-06-2007 lúc 06:17 PM. Lý do: lộn
    I know... nothing

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

    làm gì mà xuất 1 đống thông tin của mình thế? phòng trường hợp có nhu cầu dùng thêm, cũng là dễ dàng hơn, dễ hiểu hơn khi xuống hàng

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

    Đề bài chỉ bảo in ra thôi. Dùng mảng chi vậy bạn ???
    Dùng mảng để chạy sàng Eratosthene chứ chi ^,^
    Ko thì với mỗi con số mình đều phải chạy hàm kt nguyên tố, rất bất tiện.
    Đây là chương trình dùng hàm Erratosthene để giải bài toán này, cái chuyện xuất ra 10 số mỗi dòng thì mình có thể dùng mẹo nhỏ là lợi dụng việc 1 dòng có 80 ký tự nên mỗi biến xuất ra sẽ xuất với độ rộng là 8 (hơi tà đạo tý nhưng làm vậy nhanh hơn là dùng thêm 1 vòng for, hehe)
    Code:
    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #define maxn 1500
    using namespace std;
    void eratosthene(bool a[],int n)
    {
        a[0] = false; a[1] = false;
        int i,j;
        for (i = 2; i <= n; i++) a[i] = true;
        for (i = 2; i <= int(sqrt(n)); i++)
            if (a[i]) for (j = 2; j <= n/i; j++) a[i*j] = false;
    }
    int main()
    {
        bool sang[maxn];
        int n = 1015;
        eratosthene(sang,n);
        for (int i = 1; i <= 1015; i++)
             if (sang[i]) cout <<setw(8) <<i;
        system("pause");
        return 0;
    }

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