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

Đề tài: [Lỗi] bài tập xác định Số nguyên tố!

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

    Angry [Lỗi] bài tập xác định Số nguyên tố!

    Mình mới suy nghĩ ra được cách tìm "Số nguyên tố" nhanh không phải học thuộc bài code máy móc như trước đây là phải gọi biến "dem"!! Mình làm như sau:

    - Cho vòng "for" chạy từ "i đến căn(n)" nếu phát hiện có giá trị i nào đó..... bị n chia hết thì ngừng vòng lặp ngay (break và thông báo "n không là số nguyên tố!". Tất nhiên là tiết kiệm được một khoảng thời gian so với cách gọi biến "dem" (vòng for phải chạy từ 1->n và mất công hơn nếu i=2 có thể kết luận được rồi.... mà vòng for cứ chạy và đếm phải ko?).
    - Tuy nhiên, không phải dễ dàng như mình đã nghĩ! Ở TH nếu "n là số nguyên tố" thì sao? Các bạn làm thử đi rồi đọc tiếp....


    uk, chỉ còn cách duy nhất là cho điều kiện "n là số nguyên tố vào vòng lặp for" và gán cho nó thêm một điều kiện nữa! Xong, có vẻ như đã hoàn hảo! Nhưng mọi việc lại khó khăn hơn khi các giá trị "9, 15, 25, 35" có là số nguyên tố hay không thì chương trình lại không thông báo, các giá trị khác thì hoạt động bình thường. Lỗi ở đâu thì mình ko tìm ra được. Đoạn code của mình đây, mong các bạn giúp mình hoàn thành ý tưởng này với!!

    Các bạn chú ý chỉ nhập các số >3 thôi! Các trường hợp <=3 mình sẽ xét riêng ngoài vòng for!
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>  
    3. #include<math.h>
    4. main()
    5. {
    6.       int i, n;
    7.       scanf("%d",&n);
    8.       for(i=2; i<=sqrt(n); i++)
    9.       {
    10.                if(n%i == 0)
    11.                {
    12.                       printf("%d khong la so nguyen to ", n);
    13.                       break;
    14.                }
    15.                if(i = int(sqrt(n)))
    16.                {
    17.                     if(n%i != 0)
    18.                          printf("%d la so nguyen to ",n);
    19.                }
    20.       }    
    21.       getch();
    22. }

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

    Mặc định Chào bạn,

    Bài này bạn có thể viết hàm kiểm tra 1 số là số nguyên tố là được.
    Code:
    #include "iostream"
    #include "math.h"
    #include "conio.h"
    using namespace std;
    
    int n;
    bool kt( int n)
    {
          if(n<2)return false;
          else
          {
               int i = 2, j = (int) sqrt(n);
               while(i<=j && n%i!=0)i++;
               if(i>j)return true;
               return false;
          }
    }
    int main()
    {
          scanf("%d",&n);
          if(kt(n))cout<< n <<" la so nguyen to"<<endl;
          else cout<< n << " khong la so nguyen to"<<endl;
          getch();
          return 0;
    }

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

    cảm ơn! Thế còn bài của mình có ai sửa không vậy?

  4. #4
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    846

    C++ Code:
    1. #include < iostream >
    2. #include < math.h >
    3.  
    4. int main(int argc, char **argv)
    5. {
    6.     int n;
    7.     bool flag = true;
    8.     std::cout << "Enter n: ";
    9.     std::cin >> n;
    10.     for(int i = 2; i <= sqrt(n); ++ i)
    11.         if(n % i == 0)
    12.             flag = false;
    13.     if(flag)
    14.         std::cout << n << "is primes!";
    15.     else std::cout << n << "isnt primes!";
    16.  
    17.     system("pause");
    18.     return 0;
    19. }
    Đã được chỉnh sửa lần cuối bởi aydada : 07-11-2011 lúc 09:40 AM.

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

    Nếu bạn không dùng hàm thì khai báo thêm 1 biến và gán luôn bằng 1, khi nó không là số nguyên tố thì mình cho nó là 0.
    Sau đó kiểm tra biến đó. Nếu bằng 0 thì ghi ra là không phải. Còn nếu không bằng thì nó là số nguyên tố.

  6. #6
    Ngày gia nhập
    05 2012
    Bài viết
    0

    Mặc định [Lỗi] bài tập xác định Số nguyên tố!

    dòng if(n%i != 0) bị thừa
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    main()
    {
          int i, n;
          scanf("%d",&n);
          for(i=2; i<=sqrt(n); i++)
          {
                   if(n%i == 0)
                   {
                          printf("%d khong la so nguyen to ", n);
                          break;
                   }
                    if(i = (int)(sqrt(n)))
                   {
                        //if(n%i != 0)  
                             printf("%d la so nguyen to ",n);
                   }
          }
          getch();
    }

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