Как настроить массив переменной длины для простого алгоритма в C? - PullRequest
0 голосов
/ 24 сентября 2018

Я совершенно новичок в C, только действительно имел опыт работы с Python в прошлом, поэтому, пожалуйста, прости мое невежество здесь.

Я пытаюсь реализовать алгоритм простого эфира Эратосфена в C. Этот алгоритм рекурсивно отбрасывает все кратные данного числа, пока не будет найдено последнее число, которое вы хотите знать.В частности, программа будет иметь вход n и будет выводить все простые числа, меньшие чем n .

Для достижения этого я подумал создать массив длины n и рекурсивно цикл по этому массиву, отбрасывая целые числа, которые мне больше не нужны (меняя их на 0).

Однако проблема, которую я обнаружил, состоит в том, что c не допускает массивпеременной длины.Я думал, что немного перехитрил это правило, выполнив этот трюк:

void Sieve(int n) {
    int prime[n+1];
}

Но, к сожалению, даже переменные, переданные функциям, не в порядке.

Отсюда мой вопрос: как я могуинициировать такой массив в C?

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете использовать динамическое выделение памяти:

int* prime;
prime = malloc(sizeof(int)*n);

, затем использовать его как обычный массив, например prime[n-1]

...