VT09 - Tìm số nguyên tố trong mảng

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, Python, Ruby, Rust, Scratch, Swift

Cho mảng ~A~ gồm ~n~ số nguyên, hãy viết chương trình tìm và in ra các số nguyên tố có trong mảng

Input

  • Dòng đầu tiên là số nguyên dương ~n~
  • Dòng tiếp theo là ~n~ số nguyên tương ứng là các phần tử của mảng ~A~

Trong đó

  • ~n \le 10^4~
  • ~|A_{ij}| \le 1000~

Output

Xuất ra các số nguyên tố có trong mảng, yêu cầu:

  • Theo thứ tự tăng dần
  • Chỉ in ra 1 lần cho dù số nguyên tố đó xuất hiện nhiều hơn 1 lần
  • Các số nguyên tố cách nhau bằng 1 dấu cách

Sample

Input #1
4
1 2 2 3
Output #1
2 3

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -27
    zntp810__  đã bình luận lúc 4, Tháng 2, 2024, 22:55

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 1
    MinhPtit  đã bình luận lúc 16, Tháng 1, 2024, 18:23

    include<stdio.h>

    include<math.h>

    long long b[10000000]={0}; long long nt(long long n) { if(n<2) return 0; else { for(int i=2;i<=sqrt(n);i++) { if(n%i==0) return 0; } return 1;

    }
    

    } int main() { long long n; scanf("%lld", &n); long long a[n+1]; for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); } for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { if(a[i]>a[j]) { int tg=a[i]; a[i]=a[j]; a[j]=tg; } } }

    for(int i=1;i<=n;i++)
    {
        if(nt(a[i]))
        {
            if(b[a[i]]==0)
        {
            printf("%lld ", a[i]);
            b[a[i]]=1;
        }
        }
    }
    

    }


  • 0
    hailuacx  đã bình luận lúc 15, Tháng 1, 2024, 14:59

    Có rất nhiều cách làm, đây là một cách:

    • Sắp xếp tăng dần,
    • Dùng set để lưu các số nguyên tố (đảm bảo không có phần tử giống nhau). Sau duyệt set là được.

  • -2
    thangok  đã bình luận lúc 14, Tháng 1, 2024, 3:05

    include<bits/stdc++.h>

    using namespace std; bool ktnt(int so) { if(so<2) return false; for(int i=2;i<=sqrt(so);i++) if(so%i==0) return false; return true; } int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i];

    for(int i=0;i&lt;n;i++){
        sort(a,a+n);
        if(a[i]==a[i+1]) a[i]=0;
        if(ktnt(a[i])) cout<&lt;a[i]<<" ";
    }
    return 0;
    

    }


  • 0
    tuanhaone  đã bình luận lúc 16, Tháng 12, 2023, 14:49

    case 4 la j the moi nguoi


    • -1
      ngusidan123  đã bình luận lúc 7, Tháng 1, 2024, 17:23

      hình như là in ra tăng dần bạn ạ


  • 1
    vutuantruong456  đã bình luận lúc 1, Tháng 12, 2023, 15:29

    include <bits/stdc++.h>

    using namespace std;

    long long a,A[100005],B[1000005];

    bool KTSNT(long long a)

    {

    if(a<2 || a==4)return false;

    if(a>5)

    {

    if(a%2==0 || a%3==0)return false;

    else

    {

    for(int i=5;i<=sqrt(a);i+=6)

    if(a%i==0 || a%(i+2)==0)return false;

    }

    }

    return true;

    }

    int main()

    {

    cin>>a;

    for(int i=0;i<a;i++)cin>>A[i];

    sort(A,A+a);

    B[1000005]={0};

    for(int i=0;i<a;i++)

    {

    if(KTSNT(A[i])==true)

    {

    if(B[A[i]]==0)

    {

    cout<<A[i]<<" ";B[A[i]]=1;

    }

    }

    }

    return 0;

    }


  • 0
    TQThong2k11  đã bình luận lúc 28, Tháng 11, 2023, 3:12

    include <bits/stdc++.h>

    typedef long long ll; typedef double dou;

    using namespace std;

    map<ll, ll> mp; bool check(ll n){ if(n <= 1 || n % 2 == 0 || n % 3 == 0){ return n == 2 || n == 3; } for(ll i = 5; i <= sqrt(n); i += 6){ if(n % i == 0 || n % (i + 2) == 0){ return false; } } return true; } ll n, a[100006]; int main(){ cin >> n; for(int i = 1; i <= n; i++){ cin >> a[i]; mp[a[i]]++; } sort(a + 1, a + n + 1); for(int i = 1; i <= n; i++){ if(check(a[i]) == true && mp[a[i]] != 0){ cout << a[i] << ' '; mp[a[i]] = 0; } } return 0; } code C++ của em các bạn có thể than khảo nhé ^^


  • -1
    taco29  đã bình luận lúc 20, Tháng 11, 2023, 15:22 chỉnh sửa

    include <bits/stdc++.h>

    define f() {iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0);}

    using namespace std;

    bool check(int n){ if(n < 2){ return false; } for(int i = 2; i < n; i++){ if(n % i == 0){ return false; } } return true; }

    int main(){ int n; cin >> n; set<int> a; for(int i = 0; i < n; i++){ int x; cin >> x; a.insert(x); } for(auto& c : a){ if(check(c)){ cout << c << " "; } } return 0; } c++11


  • 0
    g  đã bình luận lúc 16, Tháng 11, 2023, 17:37

    include <iostream>

    include <algorithm>

    typedef unsigned int ust; const ust max = 1000;

    bool isPrime(ust n) { if (n < 2) return false; for (ust i = 2; i*i <= n; ++i) { if (n % i == 0) return false; } return true; }

    void removeDuplicates(ust arr[], ust& size) { for (ust i = 0; i < size; ++i) { for (ust j = i + 1; j < size; ) { if (arr[i] == arr[j]) { // Di chuyển các phần tử sau phần tử trùng lặp về trước for (ust k = j; k < size - 1; ++k) { arr[k] = arr[k + 1]; } --size; // Giảm kích thước mảng } else { ++j; } } } std::sort(arr, arr + size); }

    int main() { ust n; std::cin >> n; ust a[max]; for (ust i = 0; i < n; ++i) { std::cin >> a[i]; } ust foundPrime[max]; ust foundP = 0; for (ust i = 0; i < n; ++i) { if ((isPrime(a[i]))) { foundPrime[foundP++] = a[i]; } } removeDuplicates(foundPrime, foundP); for (ust i = 0; i < foundP; ++i) { std::cout << foundPrime[i] << " "; } return 0; }


  • 0
    nguien_24  đã bình luận lúc 1, Tháng 11, 2023, 21:14 sửa 4

    **

    Sai đâu mn

    **

    #include <stdio.h>
    #include <math.h>
    int kt(int n){
        if (n < 2) return 0;
        if (n==2) return 1;
        for (int i=2;i<=sqrt(n);i++){
            if (n%i==0) return 0;
        }
    }
    int main(){
        int n;
        scanf("%d",&n);
        int a[n],b[n];
        for (int i=0;i < n;i++) scanf("%d",&b[i]);
        for (int i=1;i<=1000;i++){
            if (kt(i)!=0){
                for (int j=0;j < n;j++){
                    if (i==b[j]) {printf("%d ",i);break;}
                }
            }
        }
    }
    

    • 0
      TQThong2k11  đã bình luận lúc 28, Tháng 11, 2023, 3:14

      include <stdio.h>

      include <math.h>

      typedef long long ll; typedef double dou;

      define MAX_SIZE 100006

      int cmpfunc(const void* a, const void* b) { return ((ll)a - (ll)b); }

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

      int main() { ll n, a[MAX_SIZE]; scanf("%lld", &n); for (int i = 1; i <= n; i++) { scanf("%lld", &a[i]); } qsort(a + 1, n, sizeof(ll), cmpfunc); for (int i = 1; i <= n; i++) { if (check(a[i]) == 1 && a[i] != 0) { printf("%lld ", a[i]); a[i] = 0; } } return 0; } code của mình bạn có thể tham khảo nha ^^


  • -2
    huyen33332025  đã bình luận lúc 19, Tháng 8, 2023, 13:55

    test 1 có bao nhiêu số vậy mn, ai đó liệt kê ra cho mik với :(


    • -2
      codega  đã bình luận lúc 18, Tháng 10, 2023, 8:43

      21 số nha b


  • -3
    HieuNgao288  đã bình luận lúc 10, Tháng 8, 2023, 13:54

    mình code bài này bị quá thời gian, mn có thể xem giúp mình được k ạ, cảm ơn mn rất nhiều !

    include <iostream>

    include <math.h>

    using namespace std;

    int n, x, i; int a[100000001];

    bool kt_snt(int x){ int i; if (x == 2) return true; for (i = 2; i <= int(sqrt(x)); i++){ if (x % i == 0) return false; } return true; }

    int main(){ cin >> n; for (i = 0; i < n; i++){ cin >> x; if (x > 1) a[x]++; } for (i = 2; i <= 100000000; i++){ if (a[i] != 0){ if (kt_snt(i)) cout << i << " "; } } return 0; }


  • -4
    Coding_boy  đã bình luận lúc 21, Tháng 7, 2023, 1:56

    import java.util.*;

    public class LearnMap { static boolean isPrime(int n) { if (n < 2) return false; int flag = 0; for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) { flag++; } }

        if (flag == 0) {
            return true;
        }
        return false;
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
    
        int n = sc.nextInt();
    
        int[] mang = new int[n];
        List<Integer> danhsach = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            mang[i] = sc.nextInt();
        }
    
        for (int i : mang) {
            if (isPrime(i)) {
                if (!danhsach.contains(i)) {
                    danhsach.add(i);
                }
            }
        }
    
        danhsach.sort(Integer::compare);
        for (Integer integer : danhsach) {
            System.out.print(integer + " ");
        }
    
    }
    

    }