Может кто-нибудь помочь, пожалуйста, перевести код с джавы на С++?

На стандартном потоке ввода задаётся целое число N. На стандартный поток вывода напечатайте первые N простых чисел через пробел.

Формат входных данных Число N положительно и по модулю не превышает 10000. Формат результата На стандартный поток вывода напечатайте результат.


import java.util.Scanner;
import java.util.ArrayList;

public class P1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in .nextInt();
        ArrayList < Integer > a = new ArrayList < > ();
        int d = 0;
        for (int i = 2; i < Integer.MAX_VALUE; i++) {
            boolean p = true;
            if (i != 2 && i != 3) {
                for (int j = 2; j <= Math.sqrt(i) + 1; j++) {
                    if (i % j == 0) {
                        p = false;
                        break;
                    }
                }
            }
            if (p) {
                a.add(i);
                d++;
            }
            if (d == n) {
                break;
            }
        }
        for (Integer item: a) {
            System.out.print(item + " ");
        }
    }
}

какое-то решение на С++

#include <bits/stdc++.h>
using namespace std;
struct elem {
    int val;
    elem *next;
};
elem *add(elem *head, int x) {
    elem *p = new elem;
    (*p).val = x;
    p->next = head;
    return p;
}
elem * findElem(elem* head, int n) {
    int k = 1;
    while (head) {
        head = head->next;
        k++;
        if (k == n) {
            return head;
        }
    }
}
void findElemAndNull(elem* head) {
    head->val = 0;
}
void erot(elem *head, int n, int k) {
    elem* p = head;
    int countOfAns = 1;
    for (int j = 2; j < n + 1; ++j) {
        elem* t = findElem(p, j);
        if (t->val != 0) {
            cout << t->val << " ";
            if (countOfAns == k) {
                exit(0);
            }
            countOfAns++;
            for (int l = j * j; l < n + 1; l += j) {
                findElemAndNull(findElem(p, l));
            }
        }
    }
}
elem *empty_list() {
    return nullptr;
}
int main() {
    elem *head = empty_list();
    int const M = 105000;
    int n;
    cin >> n;
    for (int i = M + 1; i > 0; i--) {
        head = add(head, i);
    }
    erot(head, M, n);
    return 0;
}


Ответы (0 шт):