VL11 - Kiểm tra số nguyên tố

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho số nguyên ~n~, hãy viết chương trình kiểm tra xem ~n~ có phải số nguyên tố hay không?

Input

Số nguyên ~n~ cần kiểm tra

Giới hạn:

  • ~|n| \le 10^{12}~

Output

Nếu ~n~ là số nguyên tố, in ra YES, ngược lại in ra NO

Sample

Input #1
7
Output #1
YES

Bình luận

Please read the guidelines before commenting.



  • 0
    doantrungducminh  đã bình luận lúc 28, Tháng 4, 2026, 13:19

    include <bits/stdc++.h>

    define ll long long

    using namespace std; ll n,g,h,i,s=0,z=0,y=0; int main() { cin >>n; h=n; for(i=1;i<=n;i++){ if(n%i==0)s+=1;} if(s==2)cout<<"YES"; else cout<<"NO"; return 0; }


  • 0
    emphan401  đã bình luận lúc 19, Tháng 3, 2026, 0:38

    import math

    def is_prime(n: int) -> bool: if n < 2: return False if n in (2, 3): return True if n % 2 == 0 or n % 3 == 0: return False i = 5 while i * i <= n: if n % i == 0 or n % (i + 2) == 0: return False i += 6 return True

    n = int(input()) print("YES" if is_prime(n) else "NO")


  • -2
    lavacasatunita  đã bình luận lúc 4, Tháng 3, 2026, 11:28

    có cái con ....


  • 0
    manh1122  đã bình luận lúc 27, Tháng 2, 2026, 17:12

    Các bạn viết hàm này sẽ nhanh hơn so với hàm bình thường nhé hay cho mình 1 vote

    bool check(ll n) {
      if(n>=1) return false;
      if(n<=3)return true;
      if(n%2==0||n%3==0) return false;
      for(int i=5;i*i<=n;i+=6) {
          if(n%i==0||n%(i+2)==0) return false;
      }
      return true;
    }
    

  • 0
    vile00605  đã bình luận lúc 26, Tháng 2, 2026, 1:01

    dễ


  • 1
    nguyenbeodeptrai  đã bình luận lúc 7, Tháng 1, 2026, 11:01

    include <iostream>

    using namespace std; long long n,i,u; int main() { cin>>n; for (i=1;i<=n;i++) { if (n%i==0) { u=u+1; } } if(u==2) { cout<<"YES"; return 0; } else { cout<<"NO"; } }


  • 1
    apt2_0227  đã bình luận lúc 27, Tháng 12, 2025, 3:50 chỉnh sửa

    Python:

    import math
    def kt(x):
        if x&lt;2:
            return False
        if x==2 or x==3:
            return True
        if x==5:
            return True
        if (x-1)%3==0:
            if ((x-1)//3)%2==0 and x%5!=0:
                return True
        elif (x-2)%3==0:
            if ((x-2)//3)%2==1 and x%5!=0:
                return True
        else:
            return False
    n=int(input())
    if(kt(n)):
        print("YES")
    else:
        print("NO")
    

  • 0
    crazychessgambit  đã bình luận lúc 2, Tháng 11, 2025, 3:26
    /*
    VL11: Kiểm tra số nguyên tố
    https://luyencode.net/problem/vl11
    TÍnh chất: 
    - chi hết cho 1 và chính nó:
    - Dùng vòng lặp kiểm tra n%i != 0 -> số đó là số nguyên tố
    - i chạy từ 2 -> (n-1)
    - != -> cin YES
    */
    
    #include <iostream>
    using namespace std;
    
    bool soNguyenTO (int n);
    
    int main ()
    {
        int n;
        cin >> n;
        bool checkS;
        checkS = soNguyenTO(n);
        if (checkS == 1)    cout <<"YES";
        else    cout << "NO";
    }
    
    bool soNguyenTO (int n) {
        if (n < 2 ) return false;
        else if (n==2)  return true;
        for ( int i = 2; i*i <= n; i++)
        {
            if (n%i==0)
            return false;
        }
        return true;
    }
    

  • 0
    ll  đã bình luận lúc 18, Tháng 10, 2025, 13:12

    include <bits/stdc++.h>

    define ll long long

    using namespace std; bool check_nt(ll n) { for (ll i = 2; i <= sqrt(n); i++) { if (n % i == 0) { return false; } } return n > 1; }

    int main() { ll n; cin >> n; if (check_nt(n)) { cout << "YES"; } else { cout << "NO"; } return 0; }


  • 0
    linh_2008123  đã bình luận lúc 17, Tháng 10, 2025, 14:47

    include<bits/stdc++.h>

    using namespace std; bool prime(int n){ for (int i = 2;i<=sqrt(n);i++){ if (n%i==0){ return false; } } return n > 1; } int main (){ int n ;cin >> n; if (prime(n)){ cout << "YES"<< "\n"; } else { cout << "NO"<<"\n"; } return 0; }


  • 1
    taphoccode  đã bình luận lúc 2, Tháng 8, 2025, 9:41

    ae nào bị tle thì cho lệnh lặp lặp tới 20 xong break là đc case 6 nhé


    • 0
      idk17276  đã bình luận lúc 23, Tháng 9, 2025, 14:11

      break r nhung van fail:/


  • 3
    kietjumper  đã bình luận lúc 23, Tháng 7, 2025, 14:40 chỉnh sửa

    Hàm ktra snt có thể viết: 👇👇👇

    bool Prime(ll a)
    {
        if (a < 2) return 0;
        if (a == 2 || a == 3) return 1;
        if (a % 2 == 0 || a % 3 == 0) return 0;
        for (int i = 5; i*i <= a; i+=6)
        {
            if (a % i == 0 || a % (i+2) == 0) return 0;
        }
        return 1;
    }
    

  • 2
    ngtuananh  đã bình luận lúc 24, Tháng 2, 2025, 7:39

    abs(n)=10^12 nhưng mà full code tui chỉ cần int cũng qua:))))


  • 5
    NC1  đã bình luận lúc 19, Tháng 1, 2025, 7:51

    Hint:

    vì abs(n) <= 10^12 nên nếu duyệt trâu sẽ TLE. Nếu ta sẽ xét từ đoạn [2; sqrt(n)]. Bổ sung thêm 2 cái if, 1 cái true với n = 2 và 3, 1 cái false cho số nhỏ hơn 3 hoặc chia hết cho 2, 3. Sau đó mới duyệt for kiểm tra các số dạng 6k ± 1 từ 5 đến căn bậc hai của n. Nếu chăm viết code thì dùng Miller - Rabin. Nhớ xử lí trường hợp số âm


  • 0
    nguyenbaongan  đã bình luận lúc 23, Tháng 12, 2024, 14:12

    case 5 là gì v mng


  • 0
    frekraiko23  đã bình luận lúc 27, Tháng 10, 2024, 6:21

    test cuối là gì vậy m.n?


  • -4
    quang_bt  đã bình luận lúc 21, Tháng 10, 2024, 11:46

    bthg thoiii


  • 7
    kietjumper  đã bình luận lúc 3, Tháng 8, 2024, 15:32 chỉnh sửa

    • 0
      kietjumper  đã bình luận lúc 3, Tháng 8, 2024, 15:33

      Code tham khao nhe! c++17. Neu thay dung cho 1 up vote nhe


  • 0
    phan_phat_dat  đã bình luận lúc 11, Tháng 2, 2024, 16:03

    cái khúc if n <= 3: return True sai sai sao á

    tại sao bé hơn 2 thì sao mà bé hơn hoặc bằng 3 lại đúng