Announcement

Collapse
No announcement yet.

[Help] Kiểm tra n có phải là số nguyên tố hay k?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Help] Kiểm tra n có phải là số nguyên tố hay k?

    tình hình là làm xong mà nhập số 3 vs 5 nó bảo k phải là số nguyên tố!:sogood:
    xin các huynh chỉ giáo giúp.e new zo nên còn gà!
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int n,i,s=0;
    printf("nhap gia tri cua n");
    scanf("%d",&n);
    for (i=1;i<=n;i=i+1);
    {
    if(n%i==0) s=s+1;
    }
    if(s==2) printf("so da cho la so nguyen to");
    else printf("so da cho k phai la so nguyen to");
    }

  • #2
    Đoạn code của e có thể hiểu là:

    - Nhập số n, cho i chạy từ 1 tới n, nếu n chia hết cho i thì tăng s 1 đơn vị. s = 2 thì nó là snt còn khác 2 thì nó ko phải số nguyên tố..

    - Còn số nguyên tố là số chia hết cho 1 và chính nó.

    Hai cái trên ko ăn nhập gì với nhau cả.

    Như vậy e đã thấy mình sai gì chưa

    Comment


    • #3
      có ăn nhập đó anh. nếu cho i chạy từ 1 tới n thì đơn nhiên nếu là số nguyên tố thì nó phải chia hết cho 1 và n thì lúc đó s mới =2 được. còn nếu không phải là số nguyên tố thì s phải lớn hơn 2. còn bài của bạn thì đúng rồi, chỉ cần bỏ dâu ; sau hàm for là được. vì khi bạn viết dấu ; sau hàm for thì nó hiểu là đã kết thúc hàm for. vậy thì hàm if.... sau nó ko thuộc hàm for nên s vẫn = 0 cho nên nó báo ko phải là số nguyên tố rồi.
      Originally posted by 10520121 View Post
      Đoạn code của e có thể hiểu là:

      - Nhập số n, cho i chạy từ 1 tới n, nếu n chia hết cho i thì tăng s 1 đơn vị. s = 2 thì nó là snt còn khác 2 thì nó ko phải số nguyên tố..

      - Còn số nguyên tố là số chia hết cho 1 và chính nó.

      Hai cái trên ko ăn nhập gì với nhau cả.

      Như vậy e đã thấy mình sai gì chưa
      Để hoàn thành một công việc ta có thể mất 10 năm, 20 năm hoặc cả đời
      Nhưng để phá hủy nó thì một ngày là đủ!!!!

      Comment


      • #4
        hì.thế mà mình k thấy...cứ tưởng {} là no nằm trong for chứ.:sogood:
        tks bạn nhé.:kiss:

        Comment


        • #5
          nếu n là số lớn thì vòng for phải lặp rất nhiều, n = 7919 thì vòng for lặp 7919 lần.
          for(int i = 1; i<= n && s<=3; i++){}

          Comment


          • #6
            Originally posted by 12520471 View Post
            tình hình là làm xong mà nhập số 3 vs 5 nó bảo k phải là số nguyên tố!:sogood:
            xin các huynh chỉ giáo giúp.e new zo nên còn gà!
            Bạn có thể tham khảo thêm cách làm như sau. Có rất nhiều cách thể hiện, sau đây bonus cho bạn 1 cách:

            int main()
            {
            int n, i;
            bool SNT = false;
            printf("\nNhap vao N: ");
            scanf("%d",&n);
            if (n > 1)
            {
            SNT = true;
            for (i = 2; i <= n/2; i++)
            if(n % i == 0)
            {
            SNT = false;
            break;
            }
            }
            if (SNT == true)
            printf("%d la so nguyen to!",n);
            else
            printf("%d khong la so nguyen to.");
            return 0;
            }
            Last edited by 11520317; 27-10-2012, 19:25.
            Top Best Online - The Best Products Review Website

            Comment


            • #7
              theo ý kiến của mình thì nên để vòng for(int i=1;i<sqrt(n);i++)
              như thế thì vòng lặp cũng đã lớn lắm rồi
              và nhớ là phải ép kiểu dữ liệu về số nguyên (int) khi tính căn

              Comment


              • #8
                Originally posted by 11520579 View Post
                theo ý kiến của mình thì nên để vòng for(int i=1;i<sqrt(n);i++)
                như thế thì vòng lặp cũng đã lớn lắm rồi
                và nhớ là phải ép kiểu dữ liệu về số nguyên (int) khi tính căn
                vậy trường hợp số cực lớn (phải lưu = chuỗi) thì dùng sqrt ra sao
                Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                Bùm, Maria Ozawa Bin Laden, chuyên gia cưa bom hàng đầu Việt Nam
                ...

                Comment


                • #9
                  Originally posted by 08520195 View Post
                  vậy trường hợp số cực lớn (phải lưu = chuỗi) thì dùng sqrt ra sao
                  Với các số lớn thì có thể dùng sàng Eratosten để kiểm tra số nguyên tố, nhưng số lớn đến nỗi phải lưu = chuỗi thì không biết làm thế nào :smile: Anh biết thì có thể chia sẻ được không ạ udency:
                  “ Đơm hoa không kết trái thì có sao?

                  Là cá thì nhất định phải bơi ư?

                  Ai bảo cuộc đời là phải sống,
                  Ai bảo đau khổ rồi cũng sẽ qua,
                  Ai bảo bài hát là phải có dạo đầu,

                  Phá vỡ ranh giới để tìm kiếm điều gì đó...”

                  Comment


                  • #10
                    Theo mình thì còn 1 cách đó là: Số nguyên tố thì ko chia hết cho các số 2, 3, 5,7 với yêu cầu số đó lớn hơn 7
                    Mail: ba.thanh9x@gmail.com
                    YH: ba.thanh9x08

                    Comment


                    • #11
                      Vớ vẩn...thế thì nếu số đó là tích của 2 số nguyên tố lớn hơn 7 thì sao? 143 chẳng hạn...=))

                      Comment


                      • #12
                        Originally posted by 09520652 View Post
                        Theo mình thì còn 1 cách đó là: Số nguyên tố thì ko chia hết cho các số 2, 3, 5,7 với yêu cầu số đó lớn hơn 7
                        121 không chia hết cho 2,3,5,7 nhưng đâu phải số nguyên tố anh :nosebleed:
                        “ Đơm hoa không kết trái thì có sao?

                        Là cá thì nhất định phải bơi ư?

                        Ai bảo cuộc đời là phải sống,
                        Ai bảo đau khổ rồi cũng sẽ qua,
                        Ai bảo bài hát là phải có dạo đầu,

                        Phá vỡ ranh giới để tìm kiếm điều gì đó...”

                        Comment


                        • #13
                          Originally posted by 12520527 View Post
                          121 không chia hết cho 2,3,5,7 nhưng đâu phải số nguyên tố anh :nosebleed:
                          bạn hiểu sai ý rồi, câu ảnh nói ý là đó phải là SỐ NGUYÊN TỐ trước thì sau đó mới thỏa việc không chia hết cho 2,3,5,7 với số đó phải lớn hơn 7 ;còn bạn thì lấy đại 1 số không chia hết cho 2,3,5,7 nhưng chia hết cho 11 nếu bạn lấy 187 cũng thế vậy. mà theo anh đó thì cách đó mình cũng không nghĩ ra cách viết như thế nào!

                          Comment


                          • #14
                            Có lẽ ý của bạn 652 là như thế này:
                            Đơn giản xét 2 số 2 và 3 thôi. Đã là số ngto(> 2, 3) thì sẽ không chia hết cho 2 và 3, nên nó sẽ có dạng 6i + 1 hoặc 6i + 5 (6i +- 1). Nên trong 6 số thì chỉ cần xét 2 số này (bước nhảy 2, 4), tiết kiệm được 2/3 số bước phải chạy. Tương tự nếu xét luôn số 5 thì số bước phải chạy chỉ là 8/30 (30i +- (1, 7, 11, 13)).
                            Thông thường người ta chỉ xét tới (2, 3) thôi, không cần phải sử dụng thêm 1 mảng để lưu trữ các bước nhảy. Như trường hợp xét tới số 5 thì bước nhảy là (2, 4, 6, 2, 6, 4, 2, 4).

                            Comment

                            LHQC

                            Collapse
                            Working...
                            X